由于角色控制器的具体实现与项目需求有关,下面提供一个基础的角色控制器代码,供参考:

using UnityEngine;

public class PlayerController : MonoBehaviour
{
    // 基础移动速度
    public float moveSpeed = 5f;
    // 跳跃速度
    public float jumpSpeed = 10f;
    // 重力加速度
    public float gravity = 20f;
    // 地面检测距离
    public float groundDistance = 0.2f;
    // 地面检测层
    public LayerMask groundMask;
    // 角色控制器
    private CharacterController controller;
    // 移动方向
    private Vector3 moveDirection = Vector3.zero;
    // 是否在地面上
    private bool isGrounded = false;

    // Start 方法在脚本挂载时执行
    private void Start()
    {
        controller = GetComponent<CharacterController>();
    }

    // Update 方法每帧执行一次
    private void Update()
    {
        // 检测是否在地面上
        isGrounded = Physics.CheckSphere(transform.position, groundDistance, groundMask);

        // 获取输入
        float horizontal = Input.GetAxis("Horizontal");
        float vertical = Input.GetAxis("Vertical");

        // 计算移动方向
        Vector3 forward = transform.forward;
        Vector3 right = transform.right;
        forward.y = 0;
        right.y = 0;
        forward.Normalize();
        right.Normalize();
        moveDirection = forward * vertical + right * horizontal;

        // 如果在地面上,可以跳跃
        if (isGrounded && Input.GetKeyDown(KeyCode.Space))
        {
            moveDirection.y = jumpSpeed;
        }

        // 应用重力
        moveDirection.y -= gravity * Time.deltaTime;

        // 移动角色控制器
        controller.Move(moveDirection * moveSpeed * Time.deltaTime);
    }

    // OnDrawGizmosSelected 方法在场景中选中脚本时执行
    private void OnDrawGizmosSelected()
    {
        Gizmos.color = Color.red;
        Gizmos.DrawWireSphere(transform.position, groundDistance);
    }
}

上述代码实现了基础的角色移动和跳跃功能,并应用了重力。如果需要实现 IK 功能,可以参考 Unity 的官方文档和示例项目。需要注意的是,IK 功能需要在角色模型上添加相应的骨骼和动画,以及设置 IK 控制器。

请帮我写一个unity中的角色控制器,要有重力及IK

原文地址: https://www.cveoy.top/t/topic/yAy 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录