数学向量和旋转(Topdown java game dev – physics problem)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了数学向量和旋转(Topdown java game dev – physics problem),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2216字,纯文字阅读大概需要4分钟。
内容图文
![数学向量和旋转(Topdown java game dev – physics problem)](/upload/InfoBanner/zyjiaocheng/802/364537a3fa3548e79ec4ef33f6e89c6c.jpg)
我一直在做一个自上而下的汽车游戏已经有一段时间了,它似乎总是能够正确地做一件事.在我的实例中,它正确地完成了我的汽车物理.
我的当前轮换无法正常处理我遇到了问题.我知道问题在于我的幅度为0,同时乘以Math.cos / sin方向,但我根本不知道如何解决它.
这是当前的底层代码.
private void move(int deltaTime) {
double secondsElapsed = (deltaTime / 1000.0);// seconds since last update
double speed = velocity.magnitude();
double magnitude = 0;
if (up)
magnitude = 100.0;
if (down)
magnitude = -100.0;
if (right)
direction += rotationSpeed * (speed/topspeed);// * secondsElapsed;
if (left)
direction -= rotationSpeed * (speed/topspeed);// * secondsElapsed;
double dir = Math.toRadians(direction - 90);
acceleration = new Vector2D(magnitude * Math.cos(dir), magnitude * Math.sin(dir));
Vector2D deltaA = acceleration.scale(secondsElapsed);
velocity = velocity.add(deltaA);
if (speed < 1.5 && speed != 0)
velocity.setLength(0);
Vector2D deltaP = velocity.scale(secondsElapsed);
position = position.add(deltaP);
...
}
我的矢量类模拟矢量基础 – 包括加法减法,乘以标量……等.
重新迭代潜在的问题 – 当幅度为0时,幅度* Math.cos(dir)= 0,因此当玩家仅按下没有“加速”方向的右或左箭头键时不会改变.
如果有人需要更多信息,你可以找到它
http://www.java-gaming.org/index.php/topic,23930.0.html
解决方法:
是的,那些物理计算都混淆了.根本问题在于,正如您所知,将加速度乘以方向是错误的.这是因为你的“方向”不仅仅是汽车加速的方向;这是汽车行驶的方向.
解决这个问题的最简单方法是首先分别考虑加速度和转向.首先,加速:为此,你只有一个速度,你有“向上”和“向下”键.为此,代码看起来像这样(包括将接近零速度降低到零的阈值代码):
if (up)
acceleration = 100.0;
if (down)
acceleration = -100.0;
speed += acceleration * secondsElapsed;
if (abs(speed) < 1.5) speed = 0;
另外,你有转向,它会改变汽车运动的方向 – 也就是说,它会改变你乘以速度的单位矢量来获得速度.我也冒昧地修改你的变量名称,看起来更像代码的加速部分,并澄清它们的含义.
if (right)
rotationRate = maxRotationSpeed * (speed/topspeed);
if (left)
rotationRate = maxRotationSpeed * (speed/topspeed);
direction += rotationRate * secondsElapsed;
double dir = Math.toRadians(direction - 90);
velocity = new Vector2D(speed * Math.cos(dir), speed * Math.sin(dir));
您可以使用第二部分速度计算中第一部分的速度简单地组合这两个部分,以获得完整的简单加速和转向模拟.
内容总结
以上是互联网集市为您收集整理的数学向量和旋转(Topdown java game dev – physics problem)全部内容,希望文章能够帮你解决数学向量和旋转(Topdown java game dev – physics problem)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。