using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class quaternionapidemo : MonoBehaviour
{
public GameObject Gametargrt;
public GameObject Gamesouce;
private void OnGUI()
{
if (GUILayout.Button("当前物体转向某物体"))
{
// Vector3 vector3 = new Vector3(0, 0, 0);
// 1:欧拉角-》四元数
// Quaternion quaternion = Quaternion.Euler(vector3);
// 2: 四元数-》欧拉角
// Quaternion qt = this.transform.rotation;
// Vector3 vector31 = qt.eulerAngles;
// 3:轴角的旋转
// Quaternion quaternion1 = Quaternion.AngleAxis(50, Vector3.up);
// this.transform.rotation = quaternion1;
//4 z轴指向某个方向 注释旋转
// 当前物体转向某物体
Quaternion dir = Quaternion.LookRotation(Gametargrt.transform.position, Gamesouce.transform.position);
Gametargrt.transform.rotation = dir;
// 等效方法 Gametargrt.transform.LookAt(Gametargrt.transform.position);
}
if (GUILayout.RepeatButton("非匀速物体匀速"))
{
Quaternion dir = Quaternion.LookRotation(Gametargrt.transform.position, Gamesouce.transform.position);
//非匀速(差值旋转)
//Gametargrt.transform.rotation = Quaternion.Lerp(Gametargrt.transform.rotation,dir,0.1f);
//匀速旋转
Gametargrt.transform.rotation = Quaternion.RotateTowards(Gametargrt.transform.rotation, dir, 0.1f);
//判斷角度差
float jdcha = Quaternion.Angle(Gametargrt.transform.rotation, Gamesouce.transform.rotation);
Quaternion d = Quaternion.identity;
}
//修改当前方向
this.transform.right = Gametargrt.transform.position - Gamesouce.transform.position;
//x轴方向注视物体
Quaternion dir2 = Quaternion.FromToRotation(Vector3.right, Gametargrt.transform.position - Gamesouce.transform.position);
Gametargrt.transform.rotation = dir2;
}
}
unity 方向转换用法汇总
最新推荐文章于 2025-01-14 15:43:39 发布
2385

被折叠的 条评论
为什么被折叠?



