【发布时间】:2016-10-31 02:38:31
【问题描述】:
我所有的搜索都涉及到更一般的 arc/sin/cos 用法或射击到鼠标位置。 我正在寻找用键盘瞄准和发射弹丸,并且从头开始做了很多,作为一个网络课程中的菜鸟做一个项目,但我被困在这个问题上。我目前的数学让我在向直线当前指向的方向射击时陷入了困境......(为便于阅读而清理了代码名称):
this.x = x + len * Math.cos(angle);
this.y = y + len * Math.sin(angle);
this.xmov = -((x + len * Math.cos(angle)) - x) / ((y + len * Math.sin(angle)) - y);
this.ymov = ((y + len * Math.sin(angle)) - y) / ((x + len * Math.cos(angle)) - x);
if (Math.abs(this.xmov) > Math.abs(this.ymov)) {
this.xmove = (this.xmov * Math.abs(this.ymov));
} else {
this.xmove = this.xmov;
}
if (Math.abs(this.ymov) > Math.abs(this.xmov)) {
this.ymove = (this.xmov * this.ymov);
} else {
this.ymove = this.ymov;
}
(这是完整的东西http://jsbin.com/ximatoq/edit。A 和 D 转动,S 开火(释放时)。转动时也可以按住 S。)
...但是,您会发现它仅适用于其中的 3/8。从一个完整的圆圈中产生这个火的数学是什么?
【问题讨论】:
-
除了确定旋转时的新航向之外,为什么还要为三角函数烦恼呢?如果您有一条线并希望向其指向的同一方向发射弹丸,则二维向量就足够了。
标签: javascript canvas geometry angle