Unity中的Character Controller 简介

这篇具有很好参考价值的文章主要介绍了Unity中的Character Controller 简介。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Unity中的Character Controller 简介

Slope Limit :坡度限制

Step Offset :每步偏移量

Skin Width :皮肤厚度

Min Move Distance :最小移动距离

Center :中心

Radius :半径

Height :高度

Unity中可以使用character controller实现角色的控制,在unity中先创建一个需要被控制的角色,可以方块体等,为主角加入CharacterController组件

创建C#脚本,写入一下脚本

public Transform m_transform;

CharacterController m_ch;

void Start()

    {

        m_transform = this.transform;

        m_ch = this.GetComponent<CharacterController>();

    }

m_transfrom = this,transform; //的作用是获取主角的transform组件

m_ch = this.GetComponent<CharacterController>(); 

//的作用是获取主角的characterController组件

继续向脚本中添加代码

    float m_movSpeed = 5.0f;      //移动速度

    float m_rotSpeed = 1.0f;      //旋转速度

    float m_jumphight = 3f;       //跳跃高度

    float m_gravity = 9.8f;       //重力加速度

    private Vector3 Velocity = Vector3.zero;     //竖直方向上的一个向量

    public Transform m_groundcheck;   //与地面接触的检测器

    public float m_checkradius = 0.2f;      //地面检测器的范围

    private bool m_isground;          //一个判断是否与地面接触的bool值,接触则为true

public LayerMask layerMask;        //地面层

这里提到了一个地面检测器,地面检测器的做法为在,主角的底部添加一个空的游戏体,调整一个合适的大小,尽量小一些

添加结束之后,我们在脚本中继续添加如下代码

void Update()

    {

        m_isground = Physics.CheckSphere(m_groundcheck.position, m_checkradius, layerMask);

        if (m_isground && Velocity.y <0)

        {

            Velocity.y = 0;

        }

        if (m_isground && Input.GetButtonDown("Jump"))

        {

            Velocity.y += Mathf.Sqrt(m_jumphight * m_gravity);

        }

        //控制主角

        var vertical = Input.GetAxis("Vertical");  //键入ws

        var horizontal = Input.GetAxis("Horizontal"); //键入ad Horizontal

        var motion = transform.forward * vertical * m_movSpeed * Time.deltaTime;

        Velocity.y -= m_gravity * Time.deltaTime;    //重力加速度 a += g*时间

        m_ch.Move(Velocity * Time.deltaTime);  //竖直方向的移动

        m_ch.Move(motion); //水平方向的移动

        m_transform.Rotate(Vector3.up,horizontal * m_rotSpeed);  //旋转

}

m_isground = Physics.CheckSphere(m_groundcheck.position, m_checkradius, layerMask);这串代码为一个触碰检测,如果检测体m_groundcheck与layerMask接触后则返回一个true

Velocity.y += Mathf.Sqrt(m_jumphight * m_gravity);

计算跳跃的近似公式

Unity中的Character Controller 简介文章来源地址https://www.toymoban.com/news/detail-431816.html

到了这里,关于Unity中的Character Controller 简介的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Mysql中的LIMIT 语句

    LIMIT 语句是 MySQL 中常用的语句之一,它主要用于从关系型数据库中读取数据时,指定需要读取的行数。可以利用该语句实现分页功能,或者限制结果集返回的行数。其中最常用的语法格式如下: SELECT column1, column2, ... FROM table_name LIMIT offset, count; 其中, offset 代表偏移量,表示

    2024年02月09日
    浏览(65)
  • Controller 中的参数传递

    目录 get请求 测试结果 基本数据类型与引用数据类型 自定义数据类型   json 数据类型  post 请求 测试结果 基本数据类型与引用数据类型 自定义数据类型 ​编辑 json 数据类型  put 请求 测试结果 基本数据类型和引用数据类型  自定义数据类型  json 数据类型 delete 请求 测试

    2024年02月12日
    浏览(40)
  • Unity新动画系统之动画状态机Animator Controller

    1、创建动画状态机文件 (1)会在创建动画时自动创建 (2)Create----Animator Controller 2、动画状态机窗口相关 层级:可以在右侧齿轮设置参数大小   3、添加动画 为对象添加动画后会自动添加到状态机中 4、状态切换 动画会在1和2之间不断切换  添加条件 点击转换箭头  在这

    2024年02月05日
    浏览(47)
  • 【小沐学Unity3d】3ds Max 骨骼动画制作(CAT、Character Studio、Biped、骨骼对象)

    官网地址: https://help.autodesk.com/view/3DSMAX/2018/CHS https://help.autodesk.com/view/3DSMAX/2019/CHS https://help.autodesk.com/view/3DSMAX/2020/CHS https://help.autodesk.com/view/3DSMAX/2021/CHS https://help.autodesk.com/view/3DSMAX/2022/CHS 3ds Max 包含两套完整的对各个角色设置动画的独立子系统(即 CAT 和 character studio),

    2024年02月08日
    浏览(49)
  • 【Unity】Animator Controller中动画消失 显示问题分析及解决方案

    Unity中的Animator Controller界面突然显示空白,编辑好的动画可以正常播放,但Animator ControllerAnimator Controller界面就是不显示。重启后就再次出现,启动项目后就又消失 可能是Unity缓存问题,重新生成Unity中缓存文件即可。 关闭Unity编辑器 打开项目所在位置的 Library 文件夹 将该文

    2024年02月11日
    浏览(63)
  • Spring Boot 中的 @Controller 注解:原理、用法与示例

    Spring Boot 是一个快速开发 Spring 应用程序的框架,它提供了很多有用的功能和特性。其中,@Controller 注解是一个常用的注解,它可以将一个 Java 类标记为 Spring MVC 中的控制器。本文将介绍 Spring Boot 中 @Controller 注解的原理、用法和示例。 在 Spring MVC 中,@Controller 注解用于标识

    2024年02月07日
    浏览(53)
  • 自动驾驶状态观测1-坡度估计

    自动驾驶坡度对纵向的跟踪精度和体感都有一定程度的影响。行车场景虽然一般搭载了GPS和IMU设备,但pitch角一般不准,加速度也存在波动大的特点。泊车场景一般在室内地库,受GPS信号遮挡影响,一般无法获取高程和坡度。搭载昂贵的传感器虽然也能获取所需的坡度,但成

    2024年02月02日
    浏览(51)
  • 【ArcGIS】使用ArcGIS进行坡度分析

    坡度 是指过地表面任意一点的切平面与水平地面之间的夹角。坡度用来计算任–单元和邻域单元间变化的最大比率,如单元下降最陡的坡面(单元和它相邻单元间的高程距离的最大变化率)。 坡度分析 是计算两相邻像元间的数值变化率,即地表的陡缓程度,在输出图层中,每

    2024年02月10日
    浏览(67)
  • 【K8S源码之Pod漂移】整体概况分析 controller-manager 中的 nodelifecycle controller(Pod的驱逐)

    k8s 污点驱逐详解-源码分析 - 掘金 k8s驱逐篇(5)-kube-controller-manager驱逐 - 良凯尔 - 博客园 k8s驱逐篇(6)-kube-controller-manager驱逐-NodeLifecycleController源码分析 - 良凯尔 - 博客园 k8s驱逐篇(7)-kube-controller-manager驱逐-taintManager源码分析 - 良凯尔 - 博客园 基于 k8s 1.19 版本分析 TaintManager 与

    2024年02月12日
    浏览(42)
  • 如何使用ArcGIS Pro进行坡度分析

    坡度分析是地理信息系统中一种常见的空间分析方法,用于计算地表或地形的坡度,这里为大家介绍一下如何使用ArcGIS Pro进行坡度分析,希望能对你有所帮助。 教程所使用的数据是从水经微图中下载的DEM数据,除了DEM数据,常见的GIS数据都可以从水经微图中下载。 水经微图

    2024年03月10日
    浏览(60)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包