要解决"C# Unity角色控制器胶囊被卡在水平边缘上"的问题,可以使用以下代码示例作为解决方法:
using UnityEngine;
public class CharacterControllerExample : MonoBehaviour
{
private CharacterController controller;
private Vector3 moveDirection = Vector3.zero;
public float speed = 6.0f;
public float jumpSpeed = 8.0f;
public float gravity = 20.0f;
private void Start()
{
controller = GetComponent();
}
private void Update()
{
if (controller.isGrounded)
{
// 水平移动
moveDirection = new Vector3(Input.GetAxis("Horizontal"), 0.0f, Input.GetAxis("Vertical"));
moveDirection *= speed;
// 跳跃
if (Input.GetButton("Jump"))
{
moveDirection.y = jumpSpeed;
}
}
// 应用重力
moveDirection.y -= gravity * Time.deltaTime;
// 移动角色控制器
controller.Move(moveDirection * Time.deltaTime);
}
}
这段代码演示了一个基本的角色控制器,包含水平移动和跳跃功能。通过在Update方法中检测输入并移动角色控制器,可以避免角色控制器在水平边缘上卡住。
在Unity中,将该脚本附加到角色控制器胶囊对象上,并调整速度和跳跃速度等参数以满足需求。确保在角色控制器上添加Character Controller组件,并设置胶囊的半径和高度等属性。
请注意,该代码仅提供了一个基本的解决方案,可能需要根据具体需求进行调整和优化。