以下是您将看到的一些方法的快速描述:
>
this.bounds
:返回船的边界(一个矩形)this.bounds.getCenter()
:返回表示船边界中心的Vector2d。getVelSpeed()
:一个Vector2d
,它表示船的速度(每帧添加到位置)new Vector2d(角)
:一个新的Vector2d
,当给定一个角度(以弧度为单位)时,将其标准化Vector2d#插值(Vector2d目标,双倍量)
:不是线性插值!如果你想看插值
代码,这里是(在类Vector2d
中):
public Vector2d interpolate(Vector2d target, double amount) {
if (getDistanceSquared(target) < amount * amount)
return target;
return interpolate(getAngle(target), amount);
}
public Vector2d interpolate(double direction, double amount) {
return this.add(new Vector2d(direction).multiply(amount));
}
当玩家没有按键时,飞船应该减速。以下是我为此所做的:
public void drift() {
setVelocity(getVelocity().interpolate(Vector2d.ZERO, this.deceleration));
}
然而,现在我意识到我希望它在向目标移动时漂移。我试过这个:
public void drift(Vector2d target) {
double angle = this.bounds.getCenter().getAngle(target);
setVelocity(getVelocity().interpolate(new Vector2d(angle), this.deceleration));
}
这当然不会真的达到零速度(因为我正在向一个角度向量插值,它的数量级为1)。此外,只有当它变得非常慢时,它才会真正“漂移”到目标的方向。
关于我如何做到这一点有什么想法吗?我就是搞不懂。这是个大问题,非常感谢。
这是使用我制作的一个大图书馆,所以如果你有任何关于请问什么的问题,我想我已经涵盖了大部分内容。
你的插值
函数做奇怪的事情。为什么不使用简单的物理模型呢?例如:
车身具有位置(px,py)
和速度(vx,vy)
,而且单位方向向量(dx,dy)
非常方便
在(小)时间间隔后,dt速度根据加速度变化
vx = vx + ax * dt
vy = vy + ay * dt
任何外力(马达)都会引起加速度并改变速度
ax = forcex / mass //mass might be 1
ay = forcey / mass
干摩擦力的大小与速度无关,其方向与速度相反
ax = c * mass * (-dx)
ay = c * mass * (-dy)
液体摩擦力的大小取决于速度(不同情况下有许多不同的方程式),其方向与速度相反
ax = k * Vmagnitude * (-dx)
ay = k * Vmagnitude * (-dy)
每个时间间隔加上所有的力,得到加速度,得到速度,相应地改变位置
我刚开始在pygame中学习游戏开发,我希望玩家停止按键时,玩家对象会减速。 这就是我目前的情况: 它在向右移动时工作正常,但在向左移动时对象不会按时停止。相反,它会减速到一个点,然后继续以非常慢的速度行驶一段时间,然后停止。
我想再写一个像Flappy Bird这样的游戏。所以,我有一个身体,与鸟,并设置他的位置在开始在屏幕中部与精灵在上面。现在当用户点击屏幕时,我想把鸟向上移动。但我怎样才能做到呢?身体setTransform(向量、角度)不是我想要的。你能帮我解决这个问题吗?
我在图上实现了一个BFS,其中节点由状态类的对象标记(我实现了一个隐式等于方法进行比较)。 我已经实现了我的队列使用PriorityQueue与一个返回1的比较器,因为我想扩展程序来处理DFS,Astar等,我可以做的只是改变比较器内的逻辑 以下是相关代码: //bfscompariator。JAVA //解算器。JAVA 在遍历列表并打印当前元素时,我发现有些元素没有上移(例如,poll上的{a
问题内容: 因此,这是html代码: And here is css: 因此,我使用margin-top:-10px,但它移动了整个容器,而不仅仅是图像。 问题答案: 这是由于保证金合拢规则。要解决此问题,您可以简单地在元素上使用透明边框: 现在,为什么添加边框会中止边距折叠规则? 这不是防止保证金崩溃的唯一方法。还有其他方法,例如向元素添加填充。 为什么这可以防止利润减少?因为它(元素)与盒子布
我制作了一个身体,我想在点击按钮时移动它,我已经能够使用但它不准确。假设我想以40的线速度移动我的身体7米,我该怎么做? 我可以用身体。setTransform()但我需要身体真正移动,而不是传送。提前谢谢
当我在模拟器的 EditText 中输入文本时,屏幕不会向上移动,因此我看不到我正在输入的内容。 我想附加屏幕截图,但我还没有所需的声誉。 这只是以下代码的问题。 同时,它在同一应用程序的另一个屏幕上运行良好。 工作代码是- 我正在努力找出它为什么不起作用。请帮帮忙!