用C#结合unity写一个控制玩家移动,跳跃,旋转的代码脚本
时间: 2023-05-24 09:02:52 浏览: 468
A:
```csharp
using UnityEngine;
public class PlayerController : MonoBehaviour
{
[SerializeField] private float moveSpeed = 10f; // 移动速度
[SerializeField] private float jumpForce = 500f; // 跳跃力量
[SerializeField] private float rotateSpeed = 150f; // 旋转速度
private Rigidbody rb; // 刚体组件
private bool isGrounded = true; // 是否在地面
private void Awake()
{
rb = GetComponent<Rigidbody>();
}
private void Update()
{
// 获取水平输入
float hInput = Input.GetAxis("Horizontal");
// 获取竖直输入
float vInput = Input.GetAxis("Vertical");
// 移动玩家
Vector3 movement = new Vector3(hInput, 0, vInput) * moveSpeed;
transform.Translate(movement * Time.deltaTime);
// 跳跃
if (Input.GetKeyDown(KeyCode.Space) && isGrounded)
{
rb.AddForce(Vector3.up * jumpForce);
isGrounded = false;
}
// 旋转玩家
float rInput = Input.GetAxis("Mouse X");
transform.Rotate(Vector3.up, rInput * rotateSpeed * Time.deltaTime);
}
private void OnCollisionEnter(Collision collision)
{
// 判断是否碰到地面
if (collision.gameObject.CompareTag("Ground"))
{
isGrounded = true;
}
}
}
```
这个脚本可以实现玩家通过 WASD 或方向键移动,鼠标旋转视角,空格键进行跳跃等操作,你可以在 Unity 中将它挂到玩家对象上测试。
阅读全文