[RequireComponent(typeof(Rigidbody))]
public class PlayerMovement: MonoBehaviour
{
public float moveSpeed = 6;
public Rigidbody mRigi;
int floorMask;
float camRayLength = 100f;
Vector3 movement;
private void Awake()
{
mRigi = GetComponent<Rigidbody>();
floorMask = LayerMask.GetMask("Floor");
}
private void FixedUpdate()
{
float h = Input.GetAxisRaw("Horizontal");
float v = Input.GetAxisRaw("Vertical");
Move(h, v);
Turning();
}
void Move(float h, float v)
{
movement.Set(h, 0f, v);
movement = movement.normalized * moveSpeed * Time.deltaTime;
mRigi.MovePosition(transform.position + movement);
}
void Turning()
{
Ray camRay = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit floorHit;
if (Physics.Raycast(camRay, out floorHit, camRayLength, floorMask))
{
Vector3 playerToMouse = floorHit.point - transform.position;
playerToMouse.y = 0f;
Quaternion newRotatation = Quaternion.LookRotation(playerToMouse);
mRigi.MoveRotation(newRotatation);
}
}
简单3D角色移动控制
最新推荐文章于 2024-05-20 18:43:27 发布