【发布时间】:2019-10-17 18:56:08
【问题描述】:
此时,我将我的游戏对象拖过屏幕;但是,我很难弄清楚如何让我的游戏对象捕捉到场景中预先存在的游戏对象。实例化后,如何在运行时将我的游戏对象捕捉到另一个对象?
public class DragObject : MonoBehaviour
{
private Vector3 mOffset;
private float mZCoord;
void OnMouseDown()
{
mZCoord = Camera.main.WorldToScreenPoint(
gameObject.transform.position).z;
mOffset = gameObject.transform.position - GetMouseAsWorldPoint();
}
private Vector3 GetMouseAsWorldPoint()
{
Vector3 mousePoint = Input.mousePosition;
mousePoint.z = mZCoord;
return Camera.main.ScreenToWorldPoint(mousePoint);
}
void OnMouseDrag()
{
transform.position = GetMouseAsWorldPoint() + mOffset;
}
}
LoadAssets类:
public class LoadAssets : MonoBehaviour
{
bool isCreated = false;
bool isCreatedDrillbit = false;
public void LoadBOP()
{
if (!isCreated)
{
GameObject instance = Instantiate(Resources.Load("BOP", typeof(GameObject))) as GameObject;
isCreated = true;
}
}
public void LoadDrillBit()
{
if (!isCreatedDrillbit)
{
GameObject instance = Instantiate(Resources.Load("Drillbit", typeof(GameObject))) as GameObject;
isCreatedDrillbit = true;
}
}
}
【问题讨论】:
-
您希望它捕捉到这个游戏对象的确切位置?在它的对撞机上最近的位置?是
transform.position?这个问题非常不清楚“捕捉到”的确切含义 -
加载游戏对象时,我希望能够让该游戏对象连接到另一个游戏对象的顶部。例如,如果我有一个没有盖子的瓶子,我想装上一个盖子并将该盖子连接到瓶子的顶部。
-
或者将直接连接到瓶子顶部的游戏对象拖动。加载后我可以拖动游戏对象,但我希望能够将其连接或捕捉到另一个游戏对象。我希望这是有道理的。
标签: c# unity3d gameobject