I have been trying to get my character to be able to control something (specifically a ship) when he is inside of a box collider trigger. My script is working exactly as I want it to, but the entire ship is very shaky from the point of view of the player (it seems smooth in the editor). I make the player move by parenting the player to the ship while in the collider, and removing this relationship when the character leaves the trigger area. Ignore the weird angles/controls (my ship model is rotated funny). Does anyone know how to make it look smooth as opposed to jumpy?
Here’s my script
using UnityEngine;
using System.Collections;
public class ShipControls : MonoBehaviour {
public float speed = 10f;
public float rotationSpeed = 10f;
public bool enter;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
if (enter == true) {
if (Input.GetKey (KeyCode.UpArrow))
transform.Translate (Vector3.down * Time.deltaTime * speed);
if (Input.GetKey (KeyCode.DownArrow))
transform.Translate (Vector3.up * Time.deltaTime * speed);
if (Input.GetKey (KeyCode.LeftArrow))
transform.Rotate (0, 0, Time.deltaTime * rotationSpeed);
if (Input.GetKey (KeyCode.RightArrow))
transform.Rotate (0, 0, -1 * Time.deltaTime * rotationSpeed);
}
}
void OnTriggerEnter(Collider other){
other.transform.parent = transform;
if (other.gameObject.tag == "Player") {
enter = true;
}
}
void OnTriggerExit(Collider other){
other.transform.parent = null;
if (other.gameObject.tag == "Player")
enter = false;
}
}