Unity学习笔记-角色移动

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

1.使用transform进行移动

强制移动,直接改变物体的位置,例如:

public float speed = 3;
Vector3 move;

void Update()
    {
        float h = Input.GetAxis("Horizontal");
        float v = Input.GetAxis("Vertical");
        Move(h, 0, v);
    }

 void Move(float x, float y, float z)
    {
        move = new Vector3(x, y, z);
        Vector3 to = transform.position + move;    //要看向的目标点
        transform.LookAt(to);
        transform.position += move * speed * Time.deltaTime;
    }

对于某些碰撞不好处理,比如说怼着墙走会发生抖动。

2.使用RigidBody进行移动

借助刚体组件移动,代码要写在FixedUpdate中,如:

    public float speed = 3;
    Rigidbody rigid;
    Vector3 move;

    void Start()
    {
        rigid = GetComponent<Rigidbody>();
    }

    void Update()
    {
        float h = Input.GetAxis("Horizontal");
        float v = Input.GetAxis("Vertical");
        move = new Vector3(h, 0, v);
    }
    private void FixedUpdate()
    {
        Vector3 v = move * speed;
        v.y = rigid.velocity.y;  //对y方向的速度进行保护
        rigid.velocity = v;
        // 让刚体朝向目标
        Quaternion q = Quaternion.LookRotation(move);
        rigid.MoveRotation(q);
    }
3.使用角色控制器控制角色的移动

角色控制器是unity的一个组件,添加了该组件后,不需要再添加Rigidbody和碰撞体,因为它已经包含了相关功能。

unity人物移动脚本,unity,Powered by 金山文档

Slope Limit: 斜坡角度限制,角度大于该值的斜坡角色就上不去

Step Offset: 台阶高度设置,高于该值的障碍物角色不能直接移动过去

Skin Width: 皮肤宽度,就相当于第二层碰撞盒,该值不能大于下方的碰撞盒的Radius值,否则会卡在某个地方。一般这个值在Radius的5%左右

Center Radius Height: 设置碰撞盒的中心位置、半径、高度

脚本如下:文章来源地址https://www.toymoban.com/news/detail-754886.html

    CharacterController cc;
    public float speed = 3;
    Vector3 move;
 
    void Start()
    {
        cc = GetComponent<CharacterController>();
    }

    void Update()
    {
        float h = Input.GetAxis("Horizontal");
        float v = Input.GetAxis("Vertical");
        Move(h, 0, v);
    }

    void Move(float x, float y, float z)
    {
        move = new Vector3(x, 0, z);
        Vector3 m = move * speed * Time.deltaTime;
        //朝向移动方向
        transform.LookAt(transform.position + move);
        //通过cc去移动
        cc.Move(m);
    }

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

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

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

相关文章

  • Unity角色或摄像机移动和旋转的控制脚本

    该脚本挂载到需要被移动、旋转控制的物体身上,也可以之间挂在到摄像机上! 挂载到摄像机上可以实现第一人称视角控制! 挂载到物体身上,配合摄像机跟踪脚本可以实现,第三人称视角控制!  将角色控制脚本挂给摄像机即可! 以下是角色控制脚本: 将上面, 角色控

    2024年02月06日
    浏览(47)
  • 【笔记】Unity2D角色和物体移动的几种方法

    在Unity中对于物体移动有多种方法,这里根据b站up主【鼓励Jun】的视频整理了一些笔记 变量声明: 位移向量var dir=new Vector3(deltax.deltay,deltaz); 移动速度var speed=2; ps:变量声明都在主要都在方法外,实际位移操作则在Update方法中。 #键盘输入,这里举一个只x轴上移动的例子,y轴同

    2023年04月08日
    浏览(55)
  • Unity3D学习记录04——利用射线实现角色类似LOL的移动

    首先新建一个空白的GameObject,挂在一个MouseManager的脚本 实现思路: 通过获取鼠标点击的位置,获得该位置的信息,然后使角色移动到该位置 MouseManager脚本的代码如下:   代码解释: 先创建了一个Action类型的事件OnMouseClicked 这个是C#中事件的内容,我们可以在满足条件的时

    2024年02月08日
    浏览(53)
  • 【0到1学习Unity脚本编程】第一人称视角的角色控制器

    👨‍💻个人主页 :@元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏 :【0到1】Unity脚本游戏开发宝典 将摄像机变为胶囊体的子物体,按住 ctrl +shift +F 调整视野。让他变成胶囊体的眼睛 判断要前进时按照哪个

    2024年02月05日
    浏览(39)
  • 【unity学习笔记-如何给动态的人物添加碰撞体】

    前景提要 如题,项目中想实现和人物进行简单的互动,比如点击他的手臂的时候他会播放手臂的动作,点击脚的时候播放预设的和脚有关的动画 之前我的实现方式是十分暴力的在人物模型中对应的部位添加一个子物体,给子物体添加正方体/圆体这种规则的碰撞体,然后因为他是在

    2023年04月08日
    浏览(80)
  • Unity实现人物旋转+移动

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

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

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

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

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

    2024年02月04日
    浏览(66)
  • Unity Animator人物模型动画移动偏移

    模型动画出现移动方向偏移 !修改Animation中的Root Transform Rotation(根变换位置)、Root Transform Rotation(x,y,z)(旋转),Bake Info Pose修改为Original。可以解决 !!但是,使用动画移动函数时将无法移动,原因是锁定根变换位置和循环位置 !!!所以只要修改依据为原始或者微调偏离值,

    2024年02月15日
    浏览(39)
  • Unity 原神人物移动和镜头处理

    每帧都处理的地方 不要用 SetTrigger 为什么呢? 你肯定会希望 SetTrigger run 就跑步 SetTrigger stop 就停止 但事实并非如此 SetTrigger 会在下一帧自动设置回去 而你移动肯定是每帧都在 SetTrigger 所以人物移动会抽搐 最好的办法是 设置float 分析原神的镜头 界面左侧负责控制人物移动

    2024年02月07日
    浏览(39)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包