저는 Unity와 rigidbodies를 처음 접했고, 3D Tron Light-cycle 게임을 만들려고 배워야한다고 생각했습니다. 내가 실린더, 구, 직사각형의 조합을 사용하여 내 플레이어 차량을했습니다, 아래와 :유니티 - 오토바이 용 강체 사용 - 어떻게해야합니까?
나는 긴 영역에 강체를 사용하고, 다음 코드를 사용 :
public float accel = 1.0f;
// Use this for initialization
void Start() {
cycleSphere = GetComponent<Rigidbody>();
}
void FixedUpdate() {
cycleSphere.velocity = Vector3.forward * accel;
}
을
차량이 전진합니다. 나는 이것을 할 수있는 더 좋은 방법이 있는지 확신하지 못하지만, 있다면 그렇게 말하십시오.
주 카메라를 차량에 장착하고 X 회전을 사용 중지하여 카메라가 돌아 가지 않도록했습니다.
이제 A 및 D 버튼을 눌러 회전 시키려합니다. 원래 Tron light-cycles의 90도 회전과는 달리, 나는 그것이 일반 차량처럼 돌아가고 싶었습니다.
그래서 나는 노력이 :void Update() {
if (Input.GetKey (KeyCode.A)) {
turning = true;
turnAnglePerFixedUpdate -= turnRateAngle;
} else if (Input.GetKey (KeyCode.D)) {
turning = true;
turnAnglePerFixedUpdate += turnRateAngle;
} else {
turning = false;
}
}
void FixedUpdate() {
float mag = cycleSphere.velocity.magnitude;
if (!turning) {
Quaternion quat = Quaternion.AngleAxis (turnAnglePerFixedUpdate, transform.up);// * transform.rotation;
cycleSphere.MoveRotation (quat);
}
cycleSphere.velocity = Vector3.forward * accel;
}
위의 코드가 차량을 회전 않지만, 그것은 여전히에서 마지막 방향으로 이동 - 더 탱크 포탑처럼 동작합니다. 더 나쁜 것은 A 또는 D를 너무 많이 누르면 원하는 방향으로 회전하게되고, 잠시 후 너트를 가며이 방향으로 회전하고 카메라로 찍습니다.
내가 잘못하지 않았고, 내가 그것을 어떻게 해결할 수 무엇?
흠, 흥미 롭군요. 그 이후로 코드에 몇 가지 수정을가했고 작동하도록 만들었지 만 조언을 받고 getKey를 입력으로 바꿨습니다. 이 코드는 어떻게 전환됩니까? –
이 코드는'2 * forwardForce'와 결합 된'Input.GetAxis ("horizontal")'에서 검색 한 값과 관련이 있습니다. 그것이 앞으로 나아갈 것을 의미하지만 수평 입력이있을 때마다 힘을 수정합니다 (조금 곡선으로 만듭니다). –