方式一
立即转向:朝向某个方向
transform.forward = endPosition - startPosition;
方式二
立即转向:看向某个点
transform.LookAt(endPosition);
方式三
立即转向:与方式一类似,朝向某个方向
transform.rotation = Quaternion.LookRotation(endPosition - startPosition);
方式四
DoTween旋转动画,需要提前知道旋转的角度
Vector3 rotationAngle = new Vector3(0, 45, 0);
transform.DORotate(rotationAngle, 1);
方式五
匀速旋转,需要实时计算自己的位置与目标位置之间的四元素
Quaternion qq = Quaternion.LookRotation(endPosition - transform.position);
transform.rotation = Quaternion.RotateTowards(transform.rotation, qq, Time.deltaTime * speed);
方式六
非匀速旋转,一般用于人物旋转(Lerp()用于平分长度,Slerp()用于平分弧度),也需要实时计算自己的位置与目标位置之间的四元素
Quaternion qq = Quaternion.LookRotation(endPosition - transform.position);
transform.rotation = Quaternion.Slerp(transform.rotation, qq, Time.deltaTime * rotationSpeed);
方式七
朝一个方向旋转【自转】
transform.Rotate(Vector3.up * Time.deltaTime * speed, Space.World);
方式八
绕着某个点旋转【公转】(旋转时,物体的中心点与旋转参照点的距离不变,所以如果物体的形状不是规则的,那么它自己也会自转,以保证半径相同)
RotateAround中第一个参赛时旋转参照点,第二个参数是旋转方向文章来源:https://www.toymoban.com/news/detail-784420.html
Vector3 turnTarget = Vector3.zero;
turnTarget.y = transform.position.y;
transform.RotateAround(turnTarget, Vector3.up, Time.deltaTime * turnSpeed);
示例脚本:文章来源地址https://www.toymoban.com/news/detail-784420.html
using UnityEngine;
using UnityEngine.UI;
using DG.Tweening;
public class MoveToTowards : MonoBehaviour
{
Vector3 endPosition = new Vector3(3, 3, 3);
Vector3 startPosition;
bool isStart = false;
float speed = 10;
Vector3 dir;
void Start()
{
startPosition = transform.position;
endPosition.y = transform.position.y;
dir = endPosition - startPosition;
//1、立即转向
//transform.forward = endPosition - startPosition;
//2、立即转向
//transform.LookAt(endPosition);
//3、立即转向
//transform.rotation = Quaternion.LookRotation(endPosition - startPosition);
//4、旋转到某个角度
Vector3 rotationAngle = new Vector3(0, 45, 0);
transform.DORotate(rotationAngle, 1);
}
float rotationSpeed = 2;
float turnSpeed = 20;
void Update()
{
//5、匀速
//Quaternion qq = Quaternion.LookRotation(endPosition - transform.position);
//transform.rotation = Quaternion.RotateTowards(transform.rotation, qq, Time.deltaTime * speed);
6、非匀速,一般用于人物旋转(Lerp()是平分长度,Slerp()是平分弧度)
//Quaternion qq = Quaternion.LookRotation(endPosition - transform.position);
//transform.rotation = Quaternion.Slerp(transform.rotation, qq, Time.deltaTime * rotationSpeed);
//7、朝一个方向旋转【自转】
//transform.Rotate(Vector3.up * Time.deltaTime * speed, Space.World);
//8、绕着某个点旋转【公转】(旋转时,物体的中心点与旋转参照点的距离不变,所以如果物体的形状不是规则的,那么它自己也会自转,以保证半径相同)
//Vector3 turnTarget = Vector3.zero;
//turnTarget.y = transform.position.y;
//transform.RotateAround(turnTarget, Vector3.up, Time.deltaTime * turnSpeed);
}
}
到了这里,关于Unity 物体的朝向与旋转的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!