Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 统一2D。查找沿轴移动的对象的坐标_C#_Unity3d - Fatal编程技术网

C# 统一2D。查找沿轴移动的对象的坐标

C# 统一2D。查找沿轴移动的对象的坐标,c#,unity3d,C#,Unity3d,我有一个球员是围绕一个点旋转,我需要使一个敌人的目标在球员前面的球员实际射击和击中球员 在下图中,红点是我在黄点敌人周围移动的目标,我试图找出如何让敌人向前射击,真正击中红点。如果我在最后一个已知的位置射击,子弹会从红色后面穿过。我想计算一个在红色前面的位置来瞄准,这样我就能真正击中红色 谢谢,最简单的方法是计算红色物体每秒扫掠的角度。浮点A=2*Mathf.pi*Mathf.Rad2Deg*半径/红色\线性\速度 乘以黄色的子弹到达圆圈所需的时间。这是你在红色之前必须瞄准的角度。FrontA=

我有一个球员是围绕一个点旋转,我需要使一个敌人的目标在球员前面的球员实际射击和击中球员

在下图中,红点是我在黄点敌人周围移动的目标,我试图找出如何让敌人向前射击,真正击中红点。如果我在最后一个已知的位置射击,子弹会从红色后面穿过。我想计算一个在红色前面的位置来瞄准,这样我就能真正击中红色


谢谢,最简单的方法是计算红色物体每秒扫掠的角度。浮点A=2*Mathf.pi*Mathf.Rad2Deg*半径/红色\线性\速度

乘以黄色的子弹到达圆圈所需的时间。这是你在红色之前必须瞄准的角度。FrontA=A*半径/子弹头速度

按该角度将矢量从黄色旋转到红色,然后拍摄。假设y是向上矢量3 shootDirection=Quaternion.AngleAxisFrontA,Vector3.up*red.transform.position-yellow.transform.position.normalized

在这最后一步中,您可能必须尝试-FrontA或Vector3.down以确保方向正确


你一定会打到红色的

您是否在问如何随机生成指向对象后面或前面的方向?你是在问如何预测物体的未来位置吗?这篇帖子不清楚你到底对回答什么感兴趣,唯一的问题是“是”或“否”,你可以给出建议。最简单的解决方案可能是:方向=玩家。位置+玩家。前进*一定距离信息玩家-敌人。位置;如果根据敌人与玩家之间的距离来计算特定距离,那么子弹速度和玩家速度实际上并不起作用。Bulets只是不断地被射入最后一个已知的红色位置,但不是在前面。理论上它应该是有效的。某个地方可能有度/弧度角错误。或者某个地方可能会有时间延迟问题。你应该一步一步地调试看看发生了什么。你可以使用Debug.DrawRay来查看shootDirection指向的位置。是的,我尝试过调试,我得到“frontA”的计算结果是正确的,但是我们得到的是red.position乘以子弹速度。我的意思是,角度轴似乎是多余的,不影响射击向量,它只给出0,0,0,1。现在我想知道哪里出了问题,我不知道它是怎么工作的,但是四元数。Euler0,0,FrontA*A实际上给出了结果,当你的上向量必须是Z时。你可以在我的上一个代码中用Vector3.front更改Vector3.up。