将生成的对象放置在鼠标位置
Placing a spawned object at a mouses location
我想要做的是:
- 单击我的 UI
中的一个图标
- 关联相应的游戏对象
用它生成并跟随我的鼠标指针
- 当我点击我的鼠标时,这个生成的对象的位置设置在我的鼠标指针所在的位置
我已经这样做了一段时间并且已经完成了前两个步骤,但是我不知道如何让我的生成对象重置其位置。有人可以帮帮我吗?
我的代码:
void MoveObject()
{
if(aliveObject != null)
{
if (moveObject == true)
{
Vector3 pos = Input.mousePosition;
pos.z = aliveObject.transform.position.z - Camera.main.transform.position.z;
aliveObject.transform.position = Camera.main.ScreenToWorldPoint (pos);
Vector3 targetPositon = Camera.main.ScreenToWorldPoint (pos);
}
else if (moveObject == false)
{
Vector3 p = Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y,10.0f));
aliveObject.transform.position = new Vector3(p.x,p.y, 0.0f);
Debug.Log("placed");
}
}
}
void Update ()
{
MoveObject ();
if (Input.GetMouseButtonDown(0))
{
moveObject = false;
}
}
public void DecreaseCount()
{
// called when UI button is clicked
if(count > 1)
aliveObject = (GameObject)Instantiate(desiredObject,new Vector3(0,0, 0.0f),Quaternion.identity);
}
我会怎么做:
Public GameObject spawnObject;
void Update ()
{
DragObject (spawnObject);
}
void DragObject (GameObject item)
{
if ( input.GetMouseButtonDown ())
{
Vector3 pos = input.mousePosition;
if (theItem == null)
{
GameObject theItem = Instantiate (item, pos, new Quaternion (0f, 0f, 0f, 0f)) as GameObject;
}
if (theItem != null)
{
theItem.transform.position = pos;
}
}
}
然后就看你销毁这个对象了。如果您在 Unity 中创建一个游戏对象,然后将其分配给 spawnObject,它应该会生成它并留在鼠标所到之处。顺便说一句,我在 phone 上输入了这个,所以请检查 Lower/Upper 个案例。
因为在update方法中,所以会锁定到鼠标的位置。我已经完成了某种形式的此操作以将游戏对象锁定到我的应用程序中的角色位置。
我想要做的是:
- 单击我的 UI 中的一个图标
- 关联相应的游戏对象 用它生成并跟随我的鼠标指针
- 当我点击我的鼠标时,这个生成的对象的位置设置在我的鼠标指针所在的位置
我已经这样做了一段时间并且已经完成了前两个步骤,但是我不知道如何让我的生成对象重置其位置。有人可以帮帮我吗?
我的代码:
void MoveObject()
{
if(aliveObject != null)
{
if (moveObject == true)
{
Vector3 pos = Input.mousePosition;
pos.z = aliveObject.transform.position.z - Camera.main.transform.position.z;
aliveObject.transform.position = Camera.main.ScreenToWorldPoint (pos);
Vector3 targetPositon = Camera.main.ScreenToWorldPoint (pos);
}
else if (moveObject == false)
{
Vector3 p = Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y,10.0f));
aliveObject.transform.position = new Vector3(p.x,p.y, 0.0f);
Debug.Log("placed");
}
}
}
void Update ()
{
MoveObject ();
if (Input.GetMouseButtonDown(0))
{
moveObject = false;
}
}
public void DecreaseCount()
{
// called when UI button is clicked
if(count > 1)
aliveObject = (GameObject)Instantiate(desiredObject,new Vector3(0,0, 0.0f),Quaternion.identity);
}
我会怎么做:
Public GameObject spawnObject;
void Update ()
{
DragObject (spawnObject);
}
void DragObject (GameObject item)
{
if ( input.GetMouseButtonDown ())
{
Vector3 pos = input.mousePosition;
if (theItem == null)
{
GameObject theItem = Instantiate (item, pos, new Quaternion (0f, 0f, 0f, 0f)) as GameObject;
}
if (theItem != null)
{
theItem.transform.position = pos;
}
}
}
然后就看你销毁这个对象了。如果您在 Unity 中创建一个游戏对象,然后将其分配给 spawnObject,它应该会生成它并留在鼠标所到之处。顺便说一句,我在 phone 上输入了这个,所以请检查 Lower/Upper 个案例。
因为在update方法中,所以会锁定到鼠标的位置。我已经完成了某种形式的此操作以将游戏对象锁定到我的应用程序中的角色位置。