如何将我的GameObject立即移动到触摸屏幕的一部分?

时间:2016-02-07 00:46:34

标签: unity3d unity5

我遇到了麻烦。我想简单地将我的游戏对象(没有动画)移动到被触摸的屏幕部分。我不希望对象可以拖动。我只希望用户能够通过触摸屏幕上的区域来移动对象,而不是拖动。在我的代码中,它正在检测触摸,但是一旦我触摸屏幕上的某个地方(在我的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;
        }

1 个答案:

答案 0 :(得分:3)

我想问题是你指定0作为深度。

enter image description here

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