标签:check down 速度 碰撞检测 ica har nta nbsp math
关系图
红色菱形:脚本
移动代码
1 //移动代码 2 public CharacterController controller;//角色控制器 3 public float speed = 12f;//移动速度 4 public float gravity = -20f;//重力加速度 5 public float jumpHeight = 3f;//跳跃高度 6 7 public Transform groundCheck;//碰撞检测物体(空物体),模型底部的东西 , 用于检测是否落地 8 public float groundDistance = 0.4f;//半径大小 9 public LayerMask groundMask;//被检测的被碰撞物体 10 11 Vector3 velocity;//移动速度 12 bool isGrounded;//脚底是否与地面接触 13 14 private Animator animator; 15 private void Start() 16 { 17 animator = this.GetComponentInChildren<Animator>(); 18 19 } 20 21 float t; 22 // Update is called once per frame 23 void Update() 24 { 25 isGrounded = Physics.CheckSphere(groundCheck.position, groundDistance, groundMask); 26 27 if (isGrounded && velocity.y < 0) 28 { 29 velocity.y = -2f; 30 } 31 32 if (Input.GetButtonDown("Jump") && isGrounded) 33 { 34 35 36 velocity.y = Mathf.Sqrt(jumpHeight * -2f * gravity); 37 38 } 39 40 41 42 float x = Input.GetAxis("Horizontal"); 43 float z = Input.GetAxis("Vertical"); 44 45 46 Vector3 move = transform.right * x + transform.forward * z; 47 48 controller.Move(move * speed * Time.deltaTime); 49 50 velocity.y += gravity * Time.deltaTime; 51 52 controller.Move(velocity * Time.deltaTime); 53 }
视角代码
1 //视角代码 2 public float 鼠标灵敏度 = 100f; 3 public Transform 玩家; 4 float xRoation = 0f; 5 // Start is called before the first frame update 6 void Start() 7 { 8 Cursor.lockState = CursorLockMode.Locked; 9 } 10 11 // Update is called once per frame 12 void Update() 13 { 14 float mouseX = Input.GetAxis("Mouse X") * 鼠标灵敏度 * Time.deltaTime; 15 float mouseY = Input.GetAxis("Mouse Y") * 鼠标灵敏度 * Time.deltaTime; 16 17 xRoation -= mouseY; 18 xRoation = Mathf.Clamp(xRoation, -75f, 75f); 19 20 transform.localRotation = Quaternion.Euler(xRoation, 0f, 0f); 21 玩家.Rotate(Vector3.up * mouseX); 22 }
标签:check down 速度 碰撞检测 ica har nta nbsp math
原文地址:https://www.cnblogs.com/i1111/p/13289601.html