Unity CharacterController控制人物移动(包括重力实现)

这篇具有很好参考价值的文章主要介绍了Unity CharacterController控制人物移动(包括重力实现)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

在使用CharacterController组件时,人物移动一般有两种方式,一种是无重力移动–>SimpleMove,一种是有重力移动–>Move。而使用有重力移动时,又会出现人在下楼梯时无法贴合地面,从而造成飞天效果,最终导致方向键控制混乱的现象。下面介绍一下本文实现方法,若有不正确的地方,望各位大佬们指正!


一、Move和SimpleMove区别

Move:角色不受重力约束,需要自己实现重力效果。
SimpleMove:会受到重力的影响,返回值是是否着地。

二、具体实现

1.Move方法

代码如下(示例):

 horizontalInput = Input.GetAxis("Horizontal");

 VerticalInput = Input.GetAxis("Vertical");

 if (Input.GetKey(KeyCode.W) || Input.GetKey(KeyCode.S) || Input.GetKey(KeyCode.A) || Input.GetKey(KeyCode.D))
 {
      characterController.Move(mainCamera.TransformDirection(new Vector3(horizontalInput, 0, VerticalInput)) * moveSpeed); 
 }

那么有了移动的方法,如何实现下落功能呢?

需要定义的参数

    public float Speed = 12f;
    public float Gravity = 20f;
    private Vector3 m_Velocity;
    
    public Transform GroundCheck;//需要检测和是否和地面接触的物体
    public float GroundDistance;
    public LayerMask GroundMask;

和移动方法一样,放在update中运行即可。这部分代码是扒的Unity官方的第一人称控制器代码,用于解决CharacterController控制人物移动时下楼梯会飞天,导致轴向混乱。

 m_IsGrounded = Physics.CheckSphere(GroundCheck.position, GroundDistance, GroundMask);//检测体m_groundcheck与layerMask层接触后则返回一个true
 if (m_IsGrounded && m_Velocity.y < 0)
 {
     m_Velocity.y = -2;
 }
 m_Velocity.y -= Time.deltaTime * Gravity;

 characterController.Move(m_Velocity * Time.deltaTime);

2.SimpleMove方法

代码如下(示例):文章来源地址https://www.toymoban.com/news/detail-510872.html

 horizontalInput = Input.GetAxis("Horizontal");

 VerticalInput = Input.GetAxis("Vertical");

 if (Input.GetKey(KeyCode.W) || Input.GetKey(KeyCode.S) || Input.GetKey(KeyCode.A) || Input.GetKey(KeyCode.D))
 {
      characterController.SimpleMove(transform.TransformDirection(new Vector3(horizontalInput, 0, VerticalInput)) * moveSpeed); 
 }

到了这里,关于Unity CharacterController控制人物移动(包括重力实现)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Unity教程3:使用BlendTree控制人物移动动画切换

    目录 创建动画文件 移动动画逻辑以及BlendTree的使用方法  创建移动变量 了解并使用混合树 实现保持移动方向的动画切换 手册链接在这:Unity User Manual (2019.3) - Unity 手册 实现了基本的人物移动代码后,为了使得我们的人物更加的生动有趣,我们还需要实现人物的动画效果。

    2024年02月13日
    浏览(31)
  • 【Unity小技巧】3D人物移动脚步和跳跃下落音效控制

    获取人物移动状态 脚步声控制 解释: go 的这个逻辑保证了只有在需要重新设置音频剪辑时才会执行,避免了声音的混叠和中断。如果去除这个逻辑,可能会导致声音播放不正常。 AS.pitch是用来控制音频的音调(pitch)的属性。该属性控制音频的播放速度,1.0 表示正常速度,

    2024年01月22日
    浏览(33)
  • Unity3D方向键控制人物移动的代码

    也可以换成 Translate 函数默认模式是 Space.Self ,此时移动方向需要为人物坐标系下的人物前进方向 Vector3(0, 0, 1) ;如果模式指定为 Space.World ,移动方向应该为世界坐标系下的人物前进方向 transform.forward , transform.forward 在人物转向过程中会改变。如果不注意这个问题,人物转

    2024年02月11日
    浏览(42)
  • Unity SteamVR 开发教程:用摇杆/触摸板控制人物持续移动(2.x 以上版本)

    持续移动是 VR 开发中的一个常用功能。一般是用户推动手柄摇杆,或者触摸手柄触摸板,来控制人物持续地移动。Unity SteamVR 插件中只提供了传送的移动功能,而没有用摇杆或触摸板控制人物持续移动的功能。因此,持续移动的功能需要我们自己开发。 使用的 Unity 版本:

    2024年02月08日
    浏览(61)
  • Unity实现人物旋转+移动

    思路:首先要有个变量去记录下操作前的一个方向状态。(本次操作的对象是正面对着屏幕的。)然后还有有个变量去描述将要发生的方向。接着要明确,前和后,左和右是横跨180°的,其他的两两是相差90°的。所以我们可以以90°一个单位去做旋转。并且利用前面总结的方向

    2024年02月14日
    浏览(36)
  • Unity实现人物移动、旋转、跳跃

    1.Player脚本控制人物移动,可单独使用。(人物需添加组件 Box   Collider和Rigidbody ) 2.相机放在人物头部,转动需要带着人物转,相机转动灵敏度和上下转动角度范围根据具体情况配置。 脚本CameraController和Player直接挂载到人物就可以用了。 3. 文件目录(人物final bowser fly,相

    2024年02月04日
    浏览(30)
  • 【Unity游戏开发教程】零基础带你从小白到超神16——四种方法控制人物移动之角色控制器

    直接修改组件位置 去资源商城下载角色控制系统成品直接拿来用 unity提供的角色控制器组件 通过物理系统自己做

    2024年02月08日
    浏览(36)
  • 实现3D人物的移动和旋转。(Unity)

    首先,需要在人物身上加刚体和碰撞器。   如果需要人物身上有声音,可以添加AudioSource音频源。  然后创建脚本,需要把脚本挂载到对应的对象身上。 如果有动画,还需要创建状态机添加到对应的对象上面,并且设置好里面的动画。  代码实现: 图片实现:     上面代码

    2024年02月04日
    浏览(53)
  • Unity-CharacterController(角色控制器)

    📜: 关于CharacterController组件的一篇文字 🥧: 点击观看常用组件相关使用 🦄 🥧: 感谢大佬支持,小胖先给你们表演一段走秀😀 提示:以下是本篇文章正文内容 CharacterController 可使您轻松进行受碰撞约束的移动,同时不必处理刚体。 CharacterController 不受力影响,仅在您调

    2024年01月16日
    浏览(41)
  • Unity进阶–通过PhotonServer实现人物移动和攻击–PhotonServer(五)

    Message peer类 客户端对接类 BLL管理 } 移动BLL 逻辑类 角色绑定的类

    2024年02月12日
    浏览(25)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包