斜めの移動量と縦横の四方向の移動量をnormalizedで移動量を同じにしようとしたのですが、調べてみても分からなかったので、教えてほしいです。有識者の方教えていただけると嬉しいです!!(投げやりですいません)
C#
1コード 2using System.Collections; 3using System.Collections.Generic; 4using UnityEngine; 5 6public class PlayerController : MonoBehaviour 7{ 8 public GameObject Player; 9 public GameObject Camera; 10 public float speed = 5f; 11 public float sprintspeed = 10f; 12 public float backspeed = 2f; 13 private Transform PlayerTransform; 14 private Transform CameraTransform; 15 private float angle; 16 // Use this for initialization 17 void Start() 18 { 19 20 PlayerTransform = transform.parent; 21 CameraTransform = GetComponent<Transform>(); 22 23 } 24 25 // Update is called once per frame 26 void Update() 27 { 28 //カメラのアングル制御 29 float X_Rotation = Input.GetAxis("Mouse X"); 30 float Y_Rotation = Input.GetAxis("Mouse Y"); 31 PlayerTransform.transform.Rotate(0, X_Rotation, 0); 32 33 //35の部分変えると下の無垢角度制限できる 34 angle = Camera.transform.localEulerAngles.x; 35 if (angle > 334 && angle < 360 || angle > 0 && 35 > angle) 36 { 37 CameraTransform.transform.Rotate(-Y_Rotation, 0, 0); 38 float kk = Y_Rotation; 39 } 40 else 41 { 42 43 if (angle > 300) 44 { 45 46 if (Input.GetAxis("Mouse Y") < 0) 47 { 48 49 CameraTransform.transform.Rotate(-Y_Rotation, 0, 0); 50 51 } 52 } 53 else 54 { 55 if (Input.GetAxis("Mouse Y") > 0) 56 { 57 58 CameraTransform.transform.Rotate(-Y_Rotation, 0, 0); 59 60 } 61 62 } 63 } 64 65 //いじっちゃだめゾーン 66 float angleDir = PlayerTransform.transform.eulerAngles.y * (Mathf.PI / 180.0f); 67 Vector3 前と後ろ = new Vector3(Mathf.Sin(angleDir), 0, Mathf.Cos(angleDir)); 68 Vector3 右と左 = new Vector3(-Mathf.Cos(angleDir), 0, Mathf.Sin(angleDir)); 69 70 71 72 //Playerの動きを制御してるところ 73 if (Input.GetKey(KeyCode.LeftControl) && Input.GetKey(KeyCode.W)) 74 { 75 PlayerTransform.transform.position += 前と後ろ * speed / 2 * Time.deltaTime; 76 } 77 else if ((Input.GetKey(KeyCode.W))) 78 { 79 PlayerTransform.transform.position += 前と後ろ * speed * Time.deltaTime; 80 } 81 82 83 84 if (Input.GetKey(KeyCode.LeftControl) && Input.GetKey(KeyCode.A)) 85 { 86 PlayerTransform.transform.position += 右と左 * speed / 2 * Time.deltaTime; 87 } 88 else if (Input.GetKey(KeyCode.A)) 89 { 90 PlayerTransform.transform.position += 右と左 * speed * Time.deltaTime; 91 } 92 93 94 if (Input.GetKey(KeyCode.LeftControl) && Input.GetKey(KeyCode.S)) 95 { 96 PlayerTransform.transform.position += -前と後ろ * backspeed / 2 * Time.deltaTime; 97 } 98 else if ((Input.GetKey(KeyCode.S))) 99 { 100 PlayerTransform.transform.position += -前と後ろ * backspeed * Time.deltaTime; 101 } 102 103 if (Input.GetKey(KeyCode.LeftControl) && Input.GetKey(KeyCode.D)) 104 { 105 PlayerTransform.transform.position += -右と左 * speed / 2 * Time.deltaTime; 106 } 107 else if (Input.GetKey(KeyCode.D)) 108 { 109 PlayerTransform.transform.position += -右と左 * speed * Time.deltaTime; 110 } 111 112 } 113}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/04/27 22:41
2022/04/28 00:02 編集
2022/04/28 00:20
2022/04/28 01:13