具有触摸位置Android的Unity 2D对象位置

时间:2014-10-25 11:50:06

标签: android unity3d unityscript

我有一个问题,

我有一个叫做射弹的物体,我希望让弹丸出现在我触摸屏幕分辨率为1090x1820的手机的地方,我的逻辑是:

#pragma strict

var projectile:Transform;
private var shoot:Transform;

function Start () {

}


function Update () { 

     for (var i = 0; i < Input.touchCount; ++i) {
         var touch:Touch = Input.GetTouch(i);
         if (touch.phase == TouchPhase.Began) {
            shoot = Instantiate(projectile) as Transform;
            shoot.position.x = touch.position.x;
            shoot.position.y = touch.position.y;
         }
     }
 }

此代码效果很好,除了弹丸没有出现在屏幕上。 不知何故,我尝试将对象放在统一编辑器上,它显示x = -2y = -1x =-1y =-5等等。我也尝试调试触摸位置及其显示x= 300y=90

我如何解决这个问题?

抱歉我的英语不好!

1 个答案:

答案 0 :(得分:1)

您的问题是您正在将世界坐标与屏幕位置混合。要解决此问题,您需要使用ScreenToWorldPoint,以便您的代码看起来类似于:

    var worldPos : Vector3 = camera.ScreenToWorldPoint (touch.position));

    shoot.position.x = worldPos.x;

    shoot.position.y = worldPos.y;

这是未经测试的代码,因此仅用于参考,因为它可以帮助您理解逻辑。