我遇到了麻烦。我想简单地将我的游戏对象(没有动画)移动到被触摸的屏幕部分。我不希望对象可以拖动。我只希望用户能够通过触摸屏幕上的区域来移动对象,而不是拖动。在我的代码中,它正在检测触摸,但是一旦我触摸屏幕上的某个地方(在我的iOS手机上测试),对象就会消失。这是一款2D游戏。我不确定这是否会影响它,但对于我的游戏,相机总是向下移动。
这是在我的Update()函数中:
if(Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Began)
{
Touch touch = Input.GetTouch(0);
Vector3 touchPosition = Camera.main.ScreenToWorldPoint(new Vector3(touch.position.x, touch.position.y, 0));
transform.position = touchPosition;
}
答案 0 :(得分:3)
我想问题是你指定0作为深度。
让 C 成为您的相机。只要对象不太远( d&gt;远)并且不太靠近( d&lt; near <),您的相机就会查看空间并渲染它可以看到的所有对象。 /强>)。 当你打电话
Vector3 touchPosition = Camera.main.ScreenToWorldPoint(
new Vector3(touch.position.x, touch.position.y, 0));
你基本上说:我需要找到一个位于光线上的点,从 C (Camera.main
)开始并向 M ({{ 1}})。要获得该光线的特定点,您必须指定沿该光线的距离: d 。当您将 d 设置为0时,您获得的是 C ,它不仅太靠近相机,实际上 相机。 d&lt; 附近适用,因此touch.position
处的任何对象都不会被渲染。
长话短说:确保接近&lt; d&lt;远,您将获得一个touchPosition
,您可以在其上放置对象并将其渲染。
touchPosition