Unity2D Android Touch行为不端

时间:2014-01-02 23:45:51

标签: android touch unity3d

我正在尝试根据用户的触摸位置翻译对象。 它的问题是,当我测试它时,一旦我在手机屏幕上拖动手指,对象就会消失。我不完全确定它发生了什么?

如果有人可以指导我那会很棒:)

由于

这是代码:

#pragma strict

function Update () {

for (var touch : Touch in Input.touches)
{
    if (touch.phase == TouchPhase.Moved) {


    transform.Translate(0, touch.position.y, 0);


}

}
}

2 个答案:

答案 0 :(得分:0)

你想在Unity专门的问题/答案网站上提出这个问题:http://answers.unity3d.com/index.html 除非与Android / iOS特定功能相关,否则很少有人会出现针对Unity特定问题的stackoverflow。

至于问题的原因,touch.position.y在屏幕空间(像素)中定义,其中transform.Translate需要世界单位(米)。您可以使用Camera.ScreenToWorldPoint()方法在两者之间进行转换,然后在相机位置和屏幕世界点之外创建一个矢量。使用此向量,您可以在场景中与某些几何体相交,或者只是将其用作相机前面的一个点。

http://docs.unity3d.com/Documentation/ScriptReference/Camera.ScreenToWorldPoint.html

答案 1 :(得分:0)

问题是你要通过touch.position.y移动对象。这不是一个世界的观点,它是触摸屏上的一个点。您想要做的事情可能是Camera.main.ScreenToWorldPoint(touch.position).y,无论您接触到哪里,都会为您提供在世界中的位置。

当然,翻译会使用一个向量来指示距离,而不是最终目的地,所以简单地将上面的内容添加到其中仍然无法按照您的意图运行。

相反,也许试试这个:

Vector3 EndPos = Camera.main.ScreenToWorldPoint(touch.position);
float speed = 1f;
transform.position = Vector3.Lerp(transform.position, EndPos, speed * Time.deltaTime);

应将物体移向手指,同时保持其动作平滑。