如何使用trig在播放器对象的“前面”生成一个对象

时间:2014-07-04 19:17:36

标签: java 2d trigonometry direction

我想在标题中传达的是,屏幕上有一个玩家,使用方向变量和三角函数,他是"看"在一个方向。我需要在他面前产生一个物体。并且通过spawn,我的意思是创建一个对象,其x和y坐标与" front"中的点的位置相匹配。玩家。

这方面的代码很难。如果没有更多信息或了解更多信息,我无法理解我需要做些什么才能让它发挥作用。

基本上这就是我所拥有的,它创建一个子弹,另一行代码将它添加到一个列表中以绘制到屏幕上。我需要知道的是如何产生" bullet"对象在正确的x& y坐标。这就是我到目前为止所拥有的。我可以假设我需要添加更多的x和y变量,但我不知道那是什么。

Bullet b = new Bullet((int)x/2+(Math.cos(Math.toRadians(direction))), (int)y/2 + (Math.sin(Math.toRadians(direction))), "/img/bullet.png",  direction, weapon);

2 个答案:

答案 0 :(得分:4)

创建一个指向您想要生成对象的方向的矢量。

x = radius * Math.cos(angle) + startX
y = radius * Math.sin(angle) + startY

将其标准化,然后根据自己的喜好进行缩放。

Here's a simple demo to illustrate.

P.S

radius这里只是从生成点开始的初始均匀位移。

答案 1 :(得分:0)

如果您理解Proportionality会有所帮助,但基本上就是这样:如果将x和y乘以相同的数字,您将离当前位置越来越远。当然这取决于信号,但最简单的方法是:假设x和y是两个正数,我们说x = 1和y = 1,那么,如果你将两个乘以正数,让我们说3,然后最后的数字(x = 3和y = 3)你将得到一个" bullet"坐在演员前面的坐标3,3,位于1,1的位置。再一次,我假设很多东西而忽略了其他一些东西,比如相机位置,透视等等。