首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Unity检测用户相对于玩家位置的触摸

Unity检测用户相对于玩家位置的触摸
EN

Stack Overflow用户
提问于 2018-06-04 06:38:19
回答 1查看 368关注 0票数 0

这一切都是在2D Unity游戏上完成的。

我正在尝试创建一个Vector2,它表示用户相对于球员位置触摸屏幕的位置。这是通过使用另外两个Vector2来完成的,一个是玩家位置,另一个是触摸位置。然而,出于某种原因,我实际上正在检测用户相对于屏幕左下角的触摸位置。代码相当简单:

Vector2 Begin;
Vector2 CurTouch;
Vector2 Vec;
...
void Update()
{
    foreach(Touch t in Input.Touches)
    {
        if(t.phase == TouchPhase.Ended) do something with Vec
        else
        {
            Begin = transform.position;
            CurTouch = t.position;
            Vec = CurTouch - Begin;
        }
    }
}

在屏幕的左下角绝对没有任何东西。我可以移动玩家,开始仍然放在左下角。我已经尝试使用播放器的不同组件的位置,我确定它们是我想要的位置,仍然是左下角。

transform.position实际上在更新()中的其他地方用来重置玩家站起来,如果他们倒下,我将他们向上移动1个单位,并将他们的Begin重置为0,该代码块工作得很好,但出于某种原因,它只想将Begin=设置到屏幕的左下角。

我曾经设置Begin = t.position if t.phase == TouchPhase.Began,效果很好,但我决定我宁愿使用Begin =player的位置,这现在不太好用。

编辑:我已经开始尝试将Begin设置为所有东西的transform.position (启动平台、主摄像头、不同的对撞器等)。而Begin只会是屏幕左下角以外的任何东西。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-04 07:06:33

Touch.position在屏幕空间中。使用Camera.ScreenToWorldPoint转换到世界空间。

参考:https://docs.unity3d.com/ScriptReference/Camera.ScreenToWorldPoint.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50671605

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档