旋转、位移、速度基本脚本和对GetComponent的一点思考

本文介绍了Unity中物体的旋转、位移和速度的控制方法,包括使用`transform.rotation`、`transform.Rotate()`、`transform.position`和`transform.Translate()`。此外,还探讨了通过`GetComponent`获取脚本组件,如NavMeshAgent的speed属性,以及Rigidbody组件来控制刚体速度的方法。文章通过具体的代码示例,详细阐述了在不同场景下如何设置和获取物体运动状态。
摘要由CSDN通过智能技术生成

1. 物体的旋转

rotation transform.rotation(w,x,y,z); 动态成员变量

  今天想要给gameobject.transform.rotation赋值,突然发现,ratation是一个四元数(Quaternion),若直接写赋值语句“.transform.rotation =new Vector3(0,0,0)”的话,会报错“Cannot implicitly convert type ‘UnityEngine.Vector3’ to ‘UnityEngine.Quaternion’”,也就是说“不能将一个三元的vector3赋值给一个四元数,类型不匹配”。
  于是查了一下,发现虽然在Transform面板上的Rotation只显示了x,y,z三元,且数值就对应与世界的直角坐标系下物体绕x,y,z轴旋转的角度,但脚本里rotation是包含w,x,y,z四元的,物体的角度由这四元共同决定,脚本里rotation的x,y,z与面板上那个并不是一回事,并不相同。那么如何方便地进行两种类型数的转换(而不是通过换算直接定义四元数每一元的值)呢?
* 四元数转欧拉角

//在start方法中,将物体初始时候的旋转角度rotation显示在屏幕上。直接Debug.Log(transform.rotation)的话,打印的是一个四元数rotation,
//要想看到沿世界xyz轴旋转的角度的那个三维数,必须要将transform.rotation转换为欧拉角。
void Start () {       
        Vector3 eulerRotation= new Vector3();
        eulerRotation=transform.rotation.eulerAngles;
        Debug.Log(eulerRotation);
    }
  • 欧拉角转四元数
//设定欧拉角为(100,0,0),就是Transform面板上看到的,我们通常理解的旋转值,
//但是脚本设定rotation的时候,需要将(100,0,0)转换为四元数类型,并赋予transform.rotation。
void Start () {
        transform.rotation=Quaternion.Euler(new Vector3(100, 0, 0));    
    }
Rotate() transform.Rotate(x,y,z,Space relativeTo); 动态成员方法

Rotate()是一个public void方法,非static方法,因而由Transform(类)的实例transform(实例)来调用。如下代码即表示(一次动作)沿自身x轴旋转2°。(其中this表示本脚本,而非其他脚本对应的gamobject。)

(this.)transform.Rotate (2,0,0);

2. 物体的位移

position transform.position(x,y,z); 动态成员变量

这个比较好理解,对应的就是世界(Slef.Word)三维直角坐标系下的位置。
下面以一段代码为例:

if(Input.GetMouseButtonUp(0)){     //鼠标左键事件
     Debug.Log("Pressed left click.");
     transform.position = new Vector3(transform.position.x-1, transform.position.y, transform.position.z);
    }

表示当

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值