Unity-角色控制器

角色控制器是什么?

角色控制器是让角色可以受制于碰撞 但是不会被刚体所牵制

如果我们对角色使用刚体判断碰撞,可能会出现一些奇怪的表现

比如:

  1. 在斜坡上往下滑动

  2. 不加约束的情况碰撞可能让自己被撞飞

    等等

    而角色控制器会让角色表现的更加稳定

    Unity 提供了角色控制器脚本专门用于控制角色

注意:

添加角色控制器后,不用再添加刚体

能检测碰撞函数

能检测触发器函数

能被射线检测

Slope Limit坡度度数限制,大于该值的斜坡上不去

Step Offset:台阶偏移值,单位为米,低于这个值的台阶才能上去,该值不能大于角色控制器的高度

Skin Width:皮肤的宽度,两个碰撞体可以穿透彼此最大的皮肤宽度,较大的值可以减少抖动,较小的值可能导致角色卡住,建议设置为半径的 10%

MinMoveDistance:最小移动距离,大多数情况下为 0,可以用来减少抖动

cs 复制代码
using System.Collections;
using System.Collections.Generic;
using System.Runtime.CompilerServices;
using UnityEngine;

public class lesson19 : MonoBehaviour
{

    private Animator animator;
    private CharacterController cc;
    private float h;
    private float v;
    // Start is called before the first frame update
    void Start()
    {
        animator = GetComponent<Animator>();
        cc = GetComponent<CharacterController>();
    }

    // Update is called once per frame
    void Update()
    {
        h = Input.GetAxis("Horizontal");
        v = Input.GetAxis("Vertical");
        //判断是否接触地面
          if (cc.isGrounded)
          {
        print("接触地面");
          }
        animator.SetFloat("x", h);
        animator.SetFloat("y", v);

        if (Input.GetKeyDown(KeyCode.Space))
        {
            animator.SetTrigger("New Trigger");
        }
        //受重力作用的移动
        //cc.SimpleMove(transform.forward * v * 180 * Time.deltaTime);
        cc.SimpleMove(new Vector3(h, 0, v) * 3);
        //不受重力影响的移动
        //cc.Move();
    }
    //碰撞到其他对象触发
    private void OnControllerColliderHit(ControllerColliderHit hit)
    {
        print(hit.collider.gameObject.name);
    }

    private void OnTriggerEnter(Collider other)
    {
        print("触发器触发");
    }
}
相关推荐
开发游戏的老王12 小时前
虚幻引擎入门教程:虚幻编辑器的基本操作
编辑器·游戏引擎·虚幻
AA陈超15 小时前
虚幻引擎5 GAS开发俯视角RPG游戏 P05-08 UI 部件数据表
c++·游戏·ue5·游戏引擎·虚幻
CV实验室15 小时前
TIP 2025 | 哈工大&哈佛等提出 TripleMixer:攻克雨雪雾干扰的3D点云去噪网络!
人工智能·计算机视觉·3d·论文
刘梦凡呀17 小时前
C#获取钉钉平台考勤记录
java·c#·钉钉
承渊政道17 小时前
动态内存管理
c语言·c++·经验分享·c#·visual studio
future_studio17 小时前
聊聊 Unity(小白专享、C# 小程序 之 播放器)
unity·小程序·c#
helloworddm18 小时前
Orleans Stream SubscriptionId 生成机制详解
java·系统架构·c#
小Tomkk18 小时前
Rokid 开发空间小程序 实战
3d·小程序·rokid·jsar
向宇it18 小时前
【unity实战】MapMagic 2实战例子
游戏·3d·unity·c#·游戏引擎
"菠萝"19 小时前
C#知识学习-017(修饰符_6)
学习·c#