unity 3D 学习笔记

本文详细介绍Unity游戏开发中对象坐标设置、旋转控制、玩家输入响应及角色移动实现。讲解了如何利用四元数和平滑插值优化旋转效果,禁用物理旋转以确保玩家控制的精确性。同时介绍了使用CharacterController调整玩家在限定空间内的移动,确保游戏体验流畅。

1、父对象的初始位置设,即刚开始的空对象的根节点位置应当设置成(0,0,0) 这样设置可以避免以后出现奇怪的坐标。 GameObject实际上就是一些组件的容器。

      unity 使用公用变量原因是,在Unity的Inpsector视图中可以修改这些共有变量。从而调节对象的参数。

       Rotate() 在默认的情况下是基于本地坐标进行旋转的,(本地坐标是每一个对象否具有的,一样有三个轴,并且这个坐标轴耕者自己的对象进行移动。是完全绑定在自己的对象上的)不过可以使用Space 来指定旋转参照的坐标系, Space.World  世界坐标系, Space.Self 自身坐标系。

      Rotate( 0,speed,0 ,Space.World)  前三个参数指的是X, Y Z, 轴  ,speed指定旋转的速度  ,向量把多个数字存储为一个单元, Vector3 () 有三个数组分别是(X,Y,Z)、需要创建一个新的向量 Vector3不是修改原有的向量,transform是只读的,

     使用四元数用于表示在旋转值之间插值(就是通过一些中间值来慢慢从一个值编程另一个值) ,看起来更加的平滑和自然。欧拉角和四元数之间可以切换。

     禁止对玩家进行物理旋转,因为场景中的所有事物会受到复杂仿真的影响,会导致对象呗弹开,或者跌倒,当玩家的旋转需要单独是的有鼠标控制的时候,就不能受到物理仿真的影响。 设置通过输入脚本设置玩家的rigibody的freeaeRotation属性,在 void Start(){} 中添加检查玩家刚性 的属性 Rigidbody(刚体) 是对象拥有一个额外的组件,物理仿真作用于刚体并处理他们接触到物体。

      Rigidbody body = GetComponent<Rigidbody>();
        if (body != null) {
            body.freezeRotation = true;
        }

2、玩家鼠标控制旋转代码

3、玩家控制 水平移动代码

        void Start () {
        transform.Translate(0, speed, 0);
        //使用键盘的鼠标的输入来控制玩家的角色的移动
        float deltaX = Input.GetAxis("Horizontal") * speed;
        float deltaZ = Input.GetAxis("vertical") * speed;
        transform.Translate(deltaX, 0, deltaZ);
    }

4、调整游戏的独立运行的速率,使得其独立于计算机。

      transform.Translate(deltaX * Time.captureFramerate, 0, deltaZ * Time.deltaTime);//乘以延迟时间,使得运动独立于计算机的影响

5、调整玩家在受限制的空间中运动,不会跑出空间。 移动CharacterController

    

 

     

转载于:https://www.cnblogs.com/xinxianquan/p/9732690.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值