Unityチュートリアル「Survival Shooter」をやっているのですが、プレイヤーキャラがマウスの方向をむいてくれなくて困っています。
チュートリアル
チュートリアル通りにプレイヤーの動作用csファイルを作成したのですが、マウスの方向を向いてくれない状態です。
「if(Physics.Raycast(camRay, out floorHit, camRayLength, floorMask)){」部分の「floorMask」を削除したら向いてくれるようになったので、「floorMask」の値がよくないみたいなのですが、どう直したらいいかわからず、ご教授いただけますでしょうか。
「Floor」オブジェクトのレイヤーは「8:Floor」に設定しております。
また、「Debug.Log(floorMask);」で値を見たところ256となっておりました。
Unityバージョン:2018.1.0f2
using UnityEngine; public class PlayerMovement : MonoBehaviour { public float speed = 6f; //プレイやの移動速度 Vector3 movement; //プレイヤーの移動方向 Animator anim; //アニメーションコンポーネント Rigidbody playerRigidbody; //Rigidbodyコンポーネント int floorMask; //Floorとrayermaskを使う float camRayLength = 100f; //カメラからのray void Awake(){ //Floorのrayermaskを作成 floorMask = LayerMask.GetMask("Floor"); //コンポーネントを取得 anim = GetComponent<Animator>(); playerRigidbody = GetComponent<Rigidbody>(); } //オブジェクトが動くたびに呼ばれる void FixedUpdate(){ //インプットから左右上下の移動量を-1もしくは1で受け取る float h = Input.GetAxisRaw("Horizontal"); float v = Input.GetAxisRaw("Vertical"); //プレイヤーを動かすMove()を呼ぶ Move(h, v); //プレイヤーの方向を動かすTurning()を呼ぶ Turning(); //プレイヤーのアニメーションを設定するAnimating()を呼ぶ Animating(h, v); } //プレイヤーを動かす処理 void Move(float h, float v){ //移動量を指定 movement.Set(h, 0f, v); //移動するベクトルを1にし、移動する距離を設定する movement = movement.normalized * speed * Time.deltaTime; //プレイヤーのポジションを動かす playerRigidbody.MovePosition(transform.position + movement); } void Turning(){ //カメラから。マウスで刺している方向のrayを取得 Ray camRay = Camera.main.ScreenPointToRay(Input.mousePosition); //rayが衝突した情報を取得する RaycastHit floorHit; //rayを飛ばして、床に衝突した場合の処理 if(Physics.Raycast(camRay, out floorHit, camRayLength, floorMask)){ //マウスで指している場所と、プレイヤーの場所の差分を取得 Vector3 playerToMouse = floorHit.point - transform.position; //プレイヤはy座標には動かさない playerToMouse.y = 0f; //プレイヤーの場所から、マウスで指している場所への角度を取得 Quaternion newRotation = Quaternion.LookRotation(playerToMouse); //プレイヤーの角度(プレイヤーの向き)を、新しく設定 playerRigidbody.MoveRotation(newRotation); } } //アニメーションの処理 void Animating(float h, float v){ //プレイヤーの移動量が0以上の場合、walkingをtrueにする bool walking = h != 0f || v != 0f; //アニメーションのパラメーターOsWalkingをWalkingの値で設定する anim.SetBool("IsWalking", walking); } }
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。