- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我正在构建一款小型太空射击游戏。当涉及到空间物理学时,我曾经遇到过数学问题。
用文字描述如下:有一个最大速度。因此,如果您全速行驶,您的飞船将在屏幕上一遍又一遍地移动,就像在旧的小行星游戏中一样。如果然后释放火箭助推器,您的船应该继续以该速度在屏幕上移动。
然后是我现在卡住的棘手部分。
如果您将船旋转任何 Angular 并再次提供助力,船应该尝试到达这个方向并且在谈到它的移动速度时永远不会超过最大速度。所以我的问题是。有人对这个问题有好主意吗?如果您知道要寻找什么,感觉就像以前做过。 :)
我将添加这个小图像来说明试图用一些向量计算来完成什么。
红色环:最大速度
绿线:当前船舶方向。
黑线:方向以及船在 x 和 y 方向的移动速度。
黑环:运动的起源。
可以说明它,但很难为此找到一个好的数学解决方案。 :)
编辑
这是我现在在每一帧中使用的代码。它为船提供运动但不提供用户必须用其火箭助推器反作用以使船停止或减速的运动力。有了这个,它会在您释放飞船的加速速度时立即停止。
//Calculates ship movement rules
var shipVelocityVec = GetVectorPosByAngle(shipMoveSpeed, shipRotationAngle);
var shipUnitVec =$V([Math.cos(shipRotationAngle),Math.sin(shipRotationAngle),0]);
var rawAccel = shipAccelSpeed / shipMass;
var scale = (shipUnitVec.dot(shipVelocityVec))/(shipTopSpeed * shipTopSpeed);
var v1 = shipUnitVec.subtract(shipVelocityVec.multiply(scale));
var finalAccelVec = v1.multiply(rawAccel);
console.log(finalAccelVec);
//move ship according to rules
var shipPosVector = $V([shipxPos, shipyPos, 0]);
var movementVector = shipPosVector.add(finalAccelVec);
shipxPos = movementVector.elements[0];
shipyPos = movementVector.elements[1];
要给出加速度,用户必须按住按钮。用户释放按钮时,加速度设置为零,必须再次加速以提供最大加速度 throttle 。
找到解决方案!在此处发布它是如何完成的。
最佳答案
您似乎混淆了什么 - 如果您正确使用向量,即使加速度处于不同的 Angular , 也没有问题将速度限制在最大速度。
您的设置应如下所示:
x
和 y
组件)。就是这样!无需考虑特殊情况 - 这就是矢量代数的魔力!
关于javascript - 向量,以最大速度计算运动力,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9295062/
我正在尝试编写一个程序,以表格的形式计算我的结果。我有一个液压升降机,可以显示作用在直径 (D1) 的活塞上的小力(我称之为 F1)可以乘以作用在直径 (D2) 的活塞上的大力 (F2) ,电梯的运行
我有一个 fiddle :https://jsfiddle.net/mvLf579a/284/ 此 fiddle 允许您使用 D3 径向布局来布置力网络,并将布局重置为默认力布局。但是,重置时链接强度
我想实现表格 View 单元格重叠,因为我想实现这种效果: 所以基本上细胞会一个接一个地堆叠。我的目标是 iOS7+(目前正在测试 iOS8)。 我目前正在做一个 CAGradientLayer,它被
尽管在 box2d 前花了几个小时,但我仍然不明白 applyforce 和 applyimpulse 是如何工作的。我尝试使用一些视觉效果来更好地理解正在发生的事情(通过在 body 位置和应用点之
首先,我是 D3 的新手。我正在尝试使用这些示例在单个 D3 图中实现不同的行为: Drag + Zoom 力导向图 但我的图表在几秒钟后卡住,我不明白为什么... 这是我的代码:http://jsf
所以,我在 Xcode 上用 Swift 玩了这个游戏,我有一个跳跃的 SKShapeNode。不过,我希望这种跳跃与玩家的触感相称。因此,小水龙头会跳得小,而轻快的水龙头会跳得更高。怎么可能做到这一
在 ARKit/SceneKit 中,当用户点击按钮时,我想对我的节点施加一个脉冲。我希望冲动来自当前用户的角度。这意味着节点将远离用户的视角。多亏了这段代码,我能够获得当前的方向/方向: func
我正在使用 Angular2 并拥有父子组件。我的子组件正在使用 DatePipe 提供程序,因为父单元测试失败并给出以下错误, 错误:非法状态:无法加载管道 DatePipe 的摘要。 如何解决这个
我是一名优秀的程序员,十分优秀!