環境Unity 2019.1.10f1
C#
使用した飛行機のアセット: リンク内容
Unityでスターフォックスのような3Dシューティングゲームを作っており、AddForceを使用し、飛行機が上下左右移動するまではできたのですが、そのときに移動する向きに機体を傾けたいと考えています。
初めは「プレイヤーの移動に対して向きを変更する」リンク内容というWebページに記載されている、初期位置と現在地の座標差分を取得し、ベクトルの長さが0.01fより大きい場合にプレイヤーの向きを変える処理を入れ、ベクトルの情報をQuaternion.LookRotationに引き渡し回転量を取得しプレイヤーを回転させるという方法を試したのですが、それだと完全に方向転換(例えば左に移動させるAキーを押すと飛行機が真左を向いて)しまい、上手くいきませんでした。
※下記コードは飛行機が上下左右に移動するというだけのスクリプトです。
using UnityEngine; using System.Collections; public class PlayerController : MonoBehaviour { // speedを制御する public float speed = 10; public float moveForceMultiplier; private Vector3 Player_pos; void FixedUpdate() { float x = Input.GetAxis("Horizontal"); float y = Input.GetAxis("Vertical"); Rigidbody rigidbody = GetComponent<Rigidbody>(); // xとyにspeedを掛ける rigidbody.AddForce(x * speed, y * speed, 0); Vector3 moveVector = Vector3.zero; rigidbody.AddForce(moveForceMultiplier * (moveVector - rigidbody.velocity)); } }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/07/17 00:31