我正在尝试点击GameObject并以与鼠标相同的速率移动它。我可以让Object移动,但是我必须做一些疯狂的修改才能让它不会在屏幕上消失。
注意:我的最终目标是为手机做这个,但是从鼠标开始。
public class ItemController : MonoBehaviour {
private Vector3 startPos;
private bool ObjectMouseDown = false;
void Update()
{
Debug.Log(Input.mousePosition + new Vector3(0,0,15));
}
void OnMouseDown()
{
startPos = transform.position;
ObjectMouseDown = true;
}
void OnMouseDrag()
{
if (ObjectMouseDown == true)
{
transform.position = Vector3.MoveTowards(transform.position, Input.mousePosition + new Vector3(0, 0, 5), Time.deltaTime * 2f);
// transform.position = Vector3.MoveTowards(transform.position, endPosition, speed * Time.deltaTime);
}
}
void OnMouseUp()
{
ObjectMouseDown = false;
}
}
注意我必须添加一个15的z值,这样对象就不会浮出屏幕。
任何帮助都会很棒。
答案 0 :(得分:1)
Input.mousePosition
返回屏幕上的绝对像素位置,而不是世界位置。你需要使用Camera.ScreenToWorldPoint
这样的东西
Vector3 mouseWorldPos = Camera.main.ScreenToWorldPoint(Input.position.x, Input.position.y, 15);
transform.position = mouseWorldPos;
您可以在此处阅读更多内容https://docs.unity3d.com/ScriptReference/Camera.ScreenToWorldPoint.html