1
2
一些观察:
两个向量(ax,ay)和(bx,by)的标量积是ax*bx+ay*by。如果它们是正交的(90度),则为0。因此,给定项目符号(ax,ay),找到一个方向(bx,by)来运行,该方向的标量积为0:
现在要找到指南针上最接近的点(BX,BY),您要运行到的方向。你也许可以从我的一个问题的答案中找到技巧,所以: How to "snap" a directional (2D) vector to a compass (N, NE, E, SE, S, SW, W, NW)? (注意,thow,我在用一个不稳定的坐标系…) 如果你只有4个指南针方向,最简单的方法是:
更大的矢量分量会告诉你大致的方向。
我想你应该可以自己想出剩下的-否则,祝你自己写游戏好运! |
2
0
我不是在听什么 var角度:number=math.atan2(chary-(shoty+shotspeedy),charx-(shotx+shotspeedx)); 是应该做的。向量(chary-shoty,charx-shotx)是从镜头位置指向角色位置的半径向量。但是当你从中减去一个速度向量,就像你在这条直线上做的那样,你得到了什么? 在我看来,你需要做的是:
如果你的跳跃实际上是相等的距离,但是,如果你只是不喜欢它看起来如果字符总是对角线跳跃,你可以通过计算vjump和八个方向向量(0,1),(0)之间的标量积来测试八个基本方向和中间方向中的每一个。7071,0.7071),(1,0),(0.7071,-0.7071)等。沿着给出最大正标量积的方向。考虑到目前的模式,通过一些聪明的编程,您可以在不到8个测试中完成这项工作。 请注意,该算法避免了任何比加法和乘法更复杂的数学运算,因此可能比需要trig函数的函数有更好的性能。 |
Diret · 获取范围内每个数字的子倍数的算法 2 年前 |
Saif · 排序时python如何决定何时调用比较器? 2 年前 |
Wadu Hek · 查找列表中唯一的重复项 2 年前 |
Crawford Patten · 如何获得整数列表的四分位数 2 年前 |
MoonGoose · 如何在python中围绕特殊字符创建空间? 2 年前 |
taha khamis · 在一个数字中组合元素的省道 2 年前 |
Soup · 比O(n)更快地找到阶乘n模m 2 年前 |
BigO · 单词积分游戏不断增加数字[关闭] 2 年前 |