我正在制作一个Drag-n-drop游戏并想知道如何保存游戏对象位置,然后在OnMouseUp启动时将对象返回到该位置。这应该被添加到多个对象中。
目前我正在将它用于鼠标事件,而且效果非常好。
void OnMouseDown()
{
screenPoint = Camera.main.WorldToScreenPoint(gameObject.transform.position);
offset = gameObject.transform.position - Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, screenPoint.z));
Debug.Log("Clicked "+gameObject.name);
}
public void OnMouseDrag()
{
Vector3 curScreenPoint = new Vector3(Input.mousePosition.x, Input.mousePosition.y, screenPoint.z);
Vector3 curPosition = Camera.main.ScreenToWorldPoint(curScreenPoint)+offset;
}
void OnMouseUp()
{
Debug.Log("Returning gameobject to startposition");
}
当OnMouseUp时,我该怎么做才能将对象返回到起始位置。 一直在网上寻找方法,但我找不到一个问题
答案 0 :(得分:3)
我不知道Unity,但我猜了(因此类型名称和内容可能需要更正...也回答可能是错误的):
Vector3 _originalPosition;
void OnMouseDown()
{
_originalPosition = gameObject.transform.position;
screenPoint = Camera.main.WorldToScreenPoint(gameObject.transform.position);
...
}
void OnMouseUp()
{
gameObject.transform.position = _originalPosition;
}
答案 1 :(得分:0)
如果您将一个空的GameObject放到层次结构中,将其放在播放器的确切位置,将其存储为变量以使其随播放器移动而移动,该怎么办?通过这个,你可以使用它的transform.position作为玩家所做动作的记录。