在OnMouseUp C#之后将GameObject返回到开始位置

时间:2014-02-03 11:22:43

标签: c# unity3d

我正在制作一个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时,我该怎么做才能将对象返回到起始位置。 一直在网上寻找方法,但我找不到一个问题

2 个答案:

答案 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作为玩家所做动作的记录。