Unity中物体的旋转⽅法代码
第⼀种:
好学者transform.Rotate(new Vector3(90, 0, 0));
//重载⽅式重载⽅式⼀第⼀个参数是 x轴旋转度数,第⼆个参数是 Y 轴旋转度数,第三个参数是Z轴旋转度数,//第四个参数是⾃⾝还是世界坐标
public void Rotate(float xAngle, float yAngle, float zAngle, Space relativeTo = Space.Self);
//重载⽅式⼆第⼀个参数沿着谁旋转第⼆个参数是旋转的⾓度第三个参数是⾃⾝还是世界坐标
情书只有风在听public void Rotate(Vector3 axis, float angle, Space relativeTo = Space.Self);
// 重载⽅式三第⼀个参数沿着谁旋转第⼆个参数是沿着⾃⾝还是世界坐标⼀般的默认世界旋转
public void Rotate(Vector3 eulers, Space relativeTo = Space.Self);
using UnityEngine;
public class ExampleClass : MonoBehaviour
{
public float speed; // 速度
void Update()
{
//以每秒1度的速度围绕其局部X轴旋转对象
transform.Rotate(Vector3.right * Time.deltaTime*speed);
// 以世界坐标的Y 轴进⾏旋转
transform.Rotate(Vector3.up * Time.deltaTime, Space.World*speed);
}
}
第⼆种:四元数旋转
// 重载⽅式是⼀个参数是vector3 类型的数据以下那两个只是形式不⼀样
public static Quaternion Euler(float x, float y, float z);
public static Quaternion Euler(Vector3 euler);
using UnityEngine;
public class Example : MonoBehaviour
{
void Start()
{
// 绕着Y 轴旋转30 度
Vector3 rotationVector = new Vector3(0, 30, 0);
流量是怎么计算的
Quaternion rotation = Quaternion.Euler(rotationVector);
}
巴西龟冬眠怎么养
}
第三种种:通过四元数⼀个物体以⼀定的速度转向⽬标物体
//通过t在a和b之间进⾏球⾯插值,将参数t夹在[0,1]范围内。
// 重载⽅式三个参数返回⼀个 Quaternion 值也就是⼀个ation 类型
//第⼀个参数是起点第⼆是终点第三个是所需要的时间
public static Quaternion Slerp(Quaternion a, Quaternion b, float t);
//这个⽤个官⽹⽰例
using UnityEngine;
using System.Collections;
笔顺表
public class ExampleClass : MonoBehaviour
{
public Transform from;
public Transform to;
private float timeCount = 0.0f;
void Update()
{
timeCount = timeCount + Time.deltaTime;
}
}
第四种:
// 绕着某⼀物体旋转
transform.RotateAround();
// 回调函数第⼀个参数是绕着某⼀物体旋转,第⼆个是旋转轴向第三个参数是旋转的速度
public void RotateAround(Vector3 point, Vector3 axis, float angle);
// 官⽹⽰例代码
using UnityEngine;
public class Example : MonoBehaviour
{
void Update()
{
// 让物体以20度/秒的速度绕着地球原点旋转。.
transform., Vector3.up, 20 * Time.deltaTime);
}
}
第五种:欧拉⾓旋转有旋转的最⼤值还有万向锁,但是本⼈不习惯使⽤欧拉⾓旋转,⼤部分使⽤的都是四元数旋转其实欧拉⾓和四元素旋转各有各的好处,最适合哪个就⽤哪个
using UnityEngine;
public class Example : MonoBehaviour
{
// 使⽤欧拉⾓指定⼀个绝对旋转
float yRotation = 5.0f;
void Start()
{
// 打印旋转x最⼤值
print(transform.eulerAngles.x);
// 打印旋转y最⼤值降妖捉怪
print(transform.eulerAngles.y);
// 打印旋转z最⼤值
print(transform.eulerAngles.z);
}
void Update()
{平等心
yRotation += Input.GetAxis("Horizontal");
花椰菜是什么transform.eulerAngles = new Vector3(10, yRotation, 0);
}
}