在游戏中我们通常要控制玩家的移动和旋转

首先我们说一下移动:

移动的本质就是在Update()或LateUpdate()中不断修改物体的position来实现移动,移动的方法有4中:

(1):transform.Translate()第一种方法与直接修改transform.position是一样的,缺点就是在有碰撞器组件的物体上时它会穿体而过

(2):Rigidbody.MovePosition()第二种用于模拟物体的物理状态,比如物体受重力影响,物体被碰撞后的击飞等等。对于运动学刚体,它基于刚体的运动应用摩擦力。这个让你模拟刚体位于移动平台之上的情况

(3):CharacterController.Move()模拟更复杂的运动,重力需要通过代码实现,返回值表示角色与周围的碰撞信息。

(4):Rigidbody.AddForce()但这种方法力的大小需要直接不断的调整。

旋转相对于物体的移动就没有那么多的方法了

(1):transform.Rotation()当然这个方法也是通过修改物体的rotation来实现

(2):Rigidbody.MoveRotation()对于运动学刚体,它基于刚体的运动应用摩擦力。这个让你模拟刚体位于移动平台之上的情况

下面我只是展示了用Rigidbody.MovePosition()与Rigidbody.MoveRotation()来实现

private int Speed = 2;

void Update () {
        float h = Input.GetAxis("Horizontal");
        float v = Input.GetAxis("Vertical");
        rigBody.MovePosition(this.transform.position+new Vector3(h,0,v)*Speed*Time.deltaTime);
       if(Input.GetAxis("Horizontal")!=0|| Input.GetAxis("Vertical")!=0)
        {
            Rotating(h,v);
        }
}
    void Rotating(float horizontal, float vertical)
    {
        // 创建角色目标方向的向量
        Vector3 targetDirection = new Vector3(horizontal, 0f, vertical);
        // 创建目标旋转值 并假设Y轴正方向为"上"方向
        Quaternion targetRotation = Quaternion.LookRotation(targetDirection, Vector3.up); //函数参数解释: LookRotation(目标方向为"前方向", 定义声明"上方向")
        // 创建新旋转值 并根据转向速度平滑转至目标旋转值
        //函数参数解释: Lerp(角色刚体当前旋转值, 目标旋转值, 根据旋转速度平滑转向)
        Quaternion newRotation = Quaternion.Lerp(rigBody.rotation, targetRotation, Speed * Time.deltaTime);
        // 更新刚体旋转值为 新旋转值
        rigBody.MoveRotation(newRotation);
    }

当然,一般情况下在物体移动的同时并且包括动画的播放,稍后我将为大家说一下动画的控制,谢谢大家!

unity中控制主角的移动和旋转相关推荐

  1. unity中控制游戏物体移动最基本的三种方法

    **unity**中控制游戏物体移动的最基本的三种方法 第一种移动方法-transform.Translate,游戏物体按照你给的方向和速度进行运动 代码如下: Public float speed; ...

  2. Unity3D总结记录(四) Unity中控制AudioSourse播放多条不同的声音文件

    Unity中,如果需要让播放声音,只需要给游戏对象添加AudioSourse组件即可,但,默认的组件中,仅支持一条音源的播放,如要实现多条音源的播放,可在代码中实现,具体方法如下: 首先在类中申请多个 ...

  3. Unity中控制摄像机跟随人物主角的移动

    首先进入场景中,把摄像机挂载到人物主角的下方,先作为主角的一个子物体存在,然后新建一个脚本CameraFllow,用于控制摄像机跟随,然后把这个脚本挂载摄像机上面,打开脚本,并复制以下的代码: usi ...

  4. unity 黑暗之光 控制主角移动的朝向

    下面是人物面朝移动位置移动的代码 在3D游戏中经常会用到 人物面向鼠标点击位置移动的模型 using UnityEngine; using System.Collections;public clas ...

  5. Unity鼠标控制摄像机拖拽、旋转、缩放(模拟编辑器摄像机功能)

    网上有不少类似内容了,不过有些不全面,甚至有有残缺,少了上下文,导致复制代码以后报错,笔者很讨厌这种太监代码!! 话说真传一句话,假传万卷书,代码全文如下:复制到自己脚本中,挂到摄像机上即可运行 us ...

  6. Unity 按键控制相机(移动、旋转、相机角度控制)

    private Vector3 m_camRot;private Transform m_camTransform;//摄像机Transform public float m_rotateSpeed ...

  7. 如何在 Unity 中使用 Probuilder 设计一个简单的关卡

    通常,当您开始在 Unity 中开发游戏时,您需要一个精简版的环境,您可以在其中移动角色. ProBuilder 允许您快速创建 3D 关卡和原型,以及创建基本的 3D 模型,而无需离开 Unity. ...

  8. Unity中C#代码学习用wasd和上下左右键控制物体前后左右上下移动和绕轴旋转

    Unity中C#代码学习用wasd和上下左右键控制物体前后左右上下移动和绕轴旋转 using System.Collections; using System.Collections.Generic; ...

  9. 【Unity编程】Unity中的欧拉旋转

    版权声明:本文为博主原创文章,欢迎转载.请保留博主链接:http://blog.csdn.net/andrewfan 欧拉角的定义 在写这篇博客之前,我搜索了网上很多关于欧拉角的定义,发现大部分引用自 ...

最新文章

  1. Angular1.x入门级自定义组件(导航条)
  2. 怎样高效阅读一篇文献?
  3. Xcode 添加前缀
  4. 百万级数据库优化方案
  5. 启用Gzip压缩(IIS)提高客户端网站访问速度
  6. 阻塞队列只有一个线程在同一时刻对其进行或者读或者写
  7. Linux PHP增加JSON支持及如何使用JSON
  8. 小米10T系列新机曝光:后置64MP三摄 辨识度超高
  9. 比特币 POW 白皮书 区块篡改成功的概率计算详解
  10. 51nod 1060 最复杂的数
  11. 用友 U9好不好???
  12. comsol入门闲聊
  13. 真香啊,20张高清数据分析全知识地图,要学的东西全都概况了
  14. 使用construct3制作Mario游戏
  15. 中国成品油价为啥会比美国贵30%?
  16. 计算机室无线网络,在小型办公室中设置无线网络
  17. 京东朱健:聊聊京东广告系统的数据库选型
  18. html虚线垂直居中,css-虚线边框滚动效果
  19. 锁相环 matlab 噪声,锁相环(PLL)系统的噪声特性
  20. 从零玩转Docker(一):什么是Docker?

热门文章

  1. 网络(一):httpURlconnection
  2. 1.5 单结晶体管和晶闸管
  3. 一早醒来皮肤很糟糕 该怎么办
  4. OpenCv——5鼠标绘制矩形
  5. OpenGL像素阵列函数、光栅操作和字符函数
  6. ATTCK实战系列——红队实战(五)
  7. access 江苏计算机二级_经验分享篇|如何备考计算机二级(文末有小福利)
  8. 中文文本分析(3)--文本相似度
  9. 中基鸿业你应该知道的七个理财小知识
  10. 如何通过视频推广的方式帮助外贸B2B企业获得询盘