我想要实现的是根据当前位置计算移动到的对象的位置。
我有(2, 0, 4)
的预定义Vector3偏移量,让我们说我的目标位置只是0,0,0
,具体取决于我的物体相对于目标位置的方向,最终位置需要使用我从目标位置预定义的偏移量计算。
例如,如果我的对象正好在目标后面,那么最终位置应为(2, 0, -4)
。
请注意,不需要考虑旋转。我只需要一个新位置移动到保留目标位置的原始方向。我不确定如何进行计算。
private void MoveToTargetWithOffset(Vector3 targetPos) {
Vector3 offset = new Vector3(2, 0, 4);
Vector3 currentPos = transform.position;
Vector3 finalPos = Vector3.zero;
// Calculate the final position. The position should be a point closest to the currentPos with the offset applied.
transform.position = finalPos;
}
三角形是我想要移动的对象。虚线表示它们应基于预定义对象的位置。
答案 0 :(得分:4)
这是一张解释它的图片。
根据图片,这是一个代码段:
public class HoverFromTarget : MonoBehaviour {
public Transform target;
public float preferredDistance = 5.0f;
// Use this for initialization
void Start () {
//Considering this object is the source object to move
PlaceObject ();
}
void PlaceObject(){
Vector3 distanceVector = transform.position - target.position ;
Vector3 distanceVectorNormalized = distanceVector.normalized;
Vector3 targetPosition = (distanceVectorNormalized * preferredDistance);
transform.position = targetPosition;
}
}