帮我写一个unity的第三人称控制器
时间: 2024-05-17 15:16:17 浏览: 152
当然可以!下面是一个示例的Unity第三人称控制器的代码:
```csharp
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ThirdPersonController : MonoBehaviour
{
public float moveSpeed = 5f;
public float rotationSpeed = 5f;
private Animator animator;
void Start()
{
animator = GetComponent<Animator>();
}
void Update()
{
float horizontalInput = Input.GetAxis("Horizontal");
float verticalInput = Input.GetAxis("Vertical");
Vector3 moveDirection = new Vector3(horizontalInput, 0, verticalInput).normalized;
if (moveDirection.magnitude >= 0.1f)
{
float targetAngle = Mathf.Atan2(moveDirection.x, moveDirection.z) * Mathf.Rad2Deg;
Quaternion rotation = Quaternion.Euler(0f, targetAngle, 0f);
transform.rotation = Quaternion.Lerp(transform.rotation, rotation, rotationSpeed * Time.deltaTime);
transform.Translate(moveDirection * moveSpeed * Time.deltaTime, Space.World);
animator.SetFloat("Speed", moveSpeed);
}
else
{
animator.SetFloat("Speed", 0f);
}
}
}
```
这个控制器可以让角色根据输入进行移动和旋转。你可以通过调整`moveSpeed`和`rotationSpeed`来控制移动和旋转的速度。在Update函数中,我们获取输入的水平和垂直轴的值,然后根据这些值来计算移动方向。接下来,我们将角色的朝向逐渐插值到目标角度,然后将角色沿着移动方向进行移动。最后,根据移动方向的大小来设置角色动画的播放速度。
希望这个控制器能满足你的需求!如果有任何问题,请随时向我提问。
阅读全文