首页 文章

团结:弹道矢量

提问于
浏览
0

这是第一人称射击游戏,我试图从一个移动的玩家发射一个射弹 . 发射方向取决于我点击屏幕的位置 . “ Launcher ”具有固定的火力强度,这意味着如果射击更加水平的射弹将在撞击地面之前进一步行进,同样朝向更向上方向发射的射弹将会更高但是当它撞击地面时将更少地水平移动由于重力 . 触发矢量由手指触摸屏幕的位置确定,然后乘以公共参数“firingstrength” . 到目前为止有道理吗?

我感到困惑的是如何在屏幕上获取手指的位置,我用它来计算应用于射弹的“矢量” .

我想象通过以下方式做到这一点(我是Unity新手):

空对象(播放器):包含

  • 运动脚本

  • 相机

  • 围绕相机的Invisble倒置球体,我用这个球体来点击鼠标(即当我点击屏幕时,游戏应该检测到我点击的球体内部的位置,以便计算一个矢量相机位置和我点击的球体墙之间)

一旦我有了矢量,我只需将它乘以“正常强度变量”并将其应用于源自摄像机位置的射弹 .

这有意义还是有更好的方法来做到这一点?

凯文

1 回答

  • 0

    您不需要球体只需使用 Input.mousePosition 并使用 ScreenPointToRay() 从中构造射线 . 比你只需使用 ray.Direction 从相机位置获取 Vector3 .

    Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
     Vector3 shootVector = ray.Diraction;
    

    这应该可以解决问题 . 对于触摸界面:

    Ray ray = Camera.main.ScreenPointToRay(Input.GetTouch(0).position);
    Vector3 shootVector = ray.Diraction;
    

相关问题