我有一个问题,
我有一个叫做射弹的物体,我希望让弹丸出现在我触摸屏幕分辨率为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 = -2
和y = -1
或x =-1
和y =-5
等等。我也尝试调试触摸位置及其显示x= 300
和y=90
等
我如何解决这个问题?
抱歉我的英语不好!
答案 0 :(得分:1)
您的问题是您正在将世界坐标与屏幕位置混合。要解决此问题,您需要使用ScreenToWorldPoint,以便您的代码看起来类似于:
var worldPos : Vector3 = camera.ScreenToWorldPoint (touch.position));
shoot.position.x = worldPos.x;
shoot.position.y = worldPos.y;
这是未经测试的代码,因此仅用于参考,因为它可以帮助您理解逻辑。