【发布时间】:2017-12-11 23:34:36
【问题描述】:
从下图中,我想将游戏对象 C 围绕另一个对象 A 旋转(角度 d 到位置 p1),直到 C 在给定时间段内连接对象 A 和 B 的位置的同一条线上。请注意,角度 d 和点 p1 是未知的。我怎样才能做到这一点?
【问题讨论】:
标签: unity3d
从下图中,我想将游戏对象 C 围绕另一个对象 A 旋转(角度 d 到位置 p1),直到 C 在给定时间段内连接对象 A 和 B 的位置的同一条线上。请注意,角度 d 和点 p1 是未知的。我怎样才能做到这一点?
【问题讨论】:
标签: unity3d
您可以使用以下功能:
var point = A.transform.position;
var axis = new Vector3(0,0,1);
var angle = d;
B.transform.RotateAround(point, axis, angle);
更新: 如果角度d未知,请使用下面的sn-p:
public GameObject A, B, C;
public bool RotateDone = false;
void Update () {
if (!RotateDone)
{
var v1 = B.transform.position - A.transform.position;
var v2 = C.transform.position - A.transform.position;
var angle = Vector3.Angle(v1, v2);
if (angle < 1)
RotateDone = true;
else
B.transform.RotateAround(A.transform.position, new Vector3(0, 0, 1), -0.5f);
}
}
【讨论】:
您可以使用第四个对象“D”来做到这一点。
【讨论】: