团结:弹道矢量

时间:2016-04-06 08:15:15

标签: vector unity3d raycasting

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

我感到困惑的是如何在屏幕上获取手指的位置,我用它来计算"向量"适用于射弹。

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

空对象(播放器):包含

  1. 移动脚本
  2. 摄像机
  3. 围绕相机的隐形倒置球体,我用这个球体来拾取鼠标点击(即当我点击屏幕时,游戏应该检测到我点击的球体内部的位置,以便计算摄像机位置和我点击的球体墙之间的矢量)
  4. 一旦我有了矢量,我只需将它乘以一个" strikestrength变量并将其应用于来自摄像机位置的射弹。

    这是否有意义或有更好的方法吗?

    凯文

1 个答案:

答案 0 :(得分: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;