Unityでゲーム開発をして1か月の初心者です。アクションゲームを作っています。闘技場のような場所があり、3Dのキャラクターがその場から落ちるとゲームオーバーという風にしたいのですが、動作確認のため、闘技場から落ちようとしても、キャラクターが同じy軸上で移動し続けます。キャラクターのRigidbodyのUse Gravityをtrue,IsKinematicをfalseにしても下に落ちませんでした。キャラクターには下のスクリプトしか付けていません。スクリプトのどこかを変更したら自由落下していきますか?またその場合どこを修正したらよいのか、分かりやすく説明していただけると幸いです。よろしくお願いします。
float x =0f; float y =0f; float z =0f; //動かしたい方向に向く private Vector3 latestPos; //前回のPosition // 毎フレーム実行される void Update() { //右十字キーで右に動く if (Input.GetKey(KeyCode.RightArrow)) { x += 9.0f * Time.deltaTime; Vector3 diff = transform.position - latestPos; //前回からどこに進んだかをベクトルで取得 latestPos = transform.position; //前回のPositionの更新 //ベクトルの大きさが0.08以上の時に向きを変える処理をする if (diff.magnitude > 0.08f) { transform.rotation = Quaternion.LookRotation(diff); //向きを変更する } } //左十字キーで左に動く if (Input.GetKey(KeyCode.LeftArrow)) { x -= 9.0f * Time.deltaTime; Vector3 diff = transform.position - latestPos; //前回からどこに進んだかをベクトルで取得 latestPos = transform.position; //前回のPositionの更新 //ベクトルの大きさが0.08以上の時に向きを変える処理をする if (diff.magnitude > 0.08f) { transform.rotation = Quaternion.LookRotation(diff); //向きを変更する } } if (Input.GetKey(KeyCode.UpArrow)) { z += 9.0f * Time.deltaTime; Vector3 diff = transform.position - latestPos; //前回からどこに進んだかをベクトルで取得 latestPos = transform.position; //前回のPositionの更新 //ベクトルの大きさが0.08以上の時に向きを変える処理をする if (diff.magnitude > 0.08f) { transform.rotation = Quaternion.LookRotation(diff); //向きを変更する } } if (Input.GetKey(KeyCode.DownArrow)) { z -= 9.0f * Time.deltaTime; Vector3 diff = transform.position - latestPos; //前回からどこに進んだかをベクトルで取得 latestPos = transform.position; //前回のPositionの更新 //ベクトルの大きさが0.08以上の時に向きを変える処理をする if (diff.magnitude > 0.08f) { transform.rotation = Quaternion.LookRotation(diff); //向きを変更する } } transform.localPosition = new Vector3(x, y, z); }
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/10/26 15:37