void FixedUpdate() { float horiz = Input.GetAxis("Horizontal"); float verti = Input.GetAxis("Vertical"); float rotation = 0; if (Input.GetKey(KeyCode.J)) { rotation = 1; } else if (Input.GetKey(KeyCode.K)) { rotation = -1; } Vector3 direc = new Vector3(verti, -horiz, rotation); if (Input.GetKey(KeyCode.LeftShift) || Input.GetKey(KeyCode.RightShift)) { boost = true; if (verti > 0) { mainRocket.fire(); } else { mainRocket.stop(); } } else { boost = false; mainRocket.stop(); } foreach (ParticleSystem thruster in rcs) { Thruster rc = thruster.GetComponent <Thruster>(); float n = Vector3.Dot(rc.direction, direc); bool rotOver = (rotation > 0 && rc.direction.z > 0) || (rotation < 0 && rc.direction.z < 0); if ((n > 0.5 || rotOver) && !(boost && rc.direction.x > 0)) { rc.fire(); } } }