我一直在做一个自上而下的汽车游戏已经有一段时间了,它似乎总是能够正确地做一件事.在我的实例中,它正确地完成了我的汽车物理.

我的当前轮换无法正常处理我遇到了问题.我知道问题在于我的幅度为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,因此当玩家仅按下没有“加速”方向的右或左箭头键时不会改变.

如果有人需要更多信息,你可以找到它

解决方法:

是的,那些物理计算都混淆了.根本问题在于,正如您所知,将加速度乘以方向是错误的.这是因为你的“方向”不仅仅是汽车加速的方向;这是汽车行驶的方向.

解决这个问题的最简单方法是首先分别考虑加速度和转向.首先,加速:为此,你只有一个速度,你有“向上”和“向下”键.为此,代码看起来像这样(包括将接近零速度降低到零的阈值代码):

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));

您可以使用第二部分速度计算中第一部分的速度简单地组合这两个部分,以获得完整的简单加速和转向模拟.

标签:java,game-physics

来源: https://codeday.me/bug/20190613/1235981.html

数学向量 java,数学向量和旋转(Topdown java game dev – physics problem)相关推荐

  1. 数学向量 java,数学向量和旋转(Topdown java game dev – physics problem)

    我一直在做一个自上而下的汽车游戏已经有一段时间了,它似乎总是能够正确地做一件事.在我的实例中,它正确地完成了我的汽车物理. 我的当前轮换无法正常处理我遇到了问题.我知道问题在于我的幅度为0,同时乘以M ...

  2. java 数学_Java数学课

    java 数学 Java Math class is a part of the java.lang package. Basically Math class contains methods fo ...

  3. java中反三角函数怎么写,Java 数学三角函数正弦、余弦、正切以及反正弦、反余弦、反正切函数的使用...

    Java 数学三角函数正弦.余弦.正切以及反正弦.反余弦.反正切函数的使用 Java中数据三角函数在Math类里面有封装好的对应方法,正弦函数是sin方法,余弦函数是cos方法,正切函数是tan方法, ...

  4. 小学数学闯关游戏 java代码_简单的java程序 小学数学闯关游戏 多谢高分

    展开全部 有4个类 MainFrame,Question,QuestionPanel,ResultPanel import java.awt.BorderLayout; import java.awt ...

  5. java数学建模,什么是数学建模- -

    正是由于认识到培养应用型数学人才的重要性,而传统的数学竞赛不能担当这个任务,从1983年起,在美国就有一些有识之士开始探讨组织一项应用数学方面的竞赛的可能性.经过论证.争论.争取资助的过程,终于在19 ...

  6. java循环左一_左旋转字符串(Java)-循环Index方式

    左旋转字符串(Java)-循环Index方式 题目要求 ​ 汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果.对于一个给定的字符序列S,请你把其循 ...

  7. 旋转数组 java_数组中左旋转的Java程序

    旋转数组 java Let's take an array a[3,4,5,1,0] here we can see after 1 rotation the position of the arra ...

  8. java swing 图片旋转_Java图片旋转,背景透明化

    import javax.imageio.ImageIO; import javax.swing.*; import java.awt.*; import java.awt.image.Buffere ...

  9. c#中计算三角形面积公式_高中数学|向量公式之用平面向量求三角形面积

    高中数学|数列求和的几种策略 点击上方蓝字关注"公众号" 向量公式之 用平面向量求三角形面积 在学习向量时,我们能体会到向量的表达形式的多样化和直观性,而这些特点使解题更加简洁,可 ...

最新文章

  1. 拨测工具_您可以拨多少钱? 快速简单地介绍有用的工具。
  2. 如何查看ubuntu下的分区命令
  3. php运行cpu利用率低,PHP-如何减低php程序的cpu使用率?
  4. 解决eclipse显示jar源代码中文乱码问题
  5. 启动64位 IIS 32位应用程序的支持
  6. Unity GeometryShader(从一个线框渲染的例子开始)
  7. 协议转换器安全使用须知
  8. 当我们在聊 Serverless 时你应该知道这些 | CSDN博文精选
  9. 本周进步要点(第3周1.9--1.15)
  10. Elasticsearch的javaAPI之facet,count,delete by query
  11. 化学实验中计算机技术的应用,数字化实验在化学教学中的应用
  12. 2021奥维地图不能用了,有没有其他地图软件能替代?
  13. 【机器学习】偏差-方差分解Bias-variance Decomposition
  14. C语言字符串+内存库函数详解
  15. 【BZOJ 3470】3470: Freda’s Walk 期望
  16. linux的iso镜像文件,linux系统安装iso文件方法
  17. Flutter性能优化—UI
  18. [R语言学习笔记] - R语言及Rstudio配置合集
  19. 大数据分析师与数据分析师_非分析师的数据分析
  20. SIPWeb视频对讲,群呼,广播会议一体方案分析

热门文章

  1. android新浪微博改进版
  2. 百度地图缩放级别与比例尺的关系
  3. iVX和其它低代码平台没啥好比的 (一)
  4. 关于web项目log日志指定输出文件位置配置
  5. 计算机在医学影像中的应用,计算机图像处理技术在医学影像中的进展与应用
  6. 免费申请office365 A1 和 a1plus 带OneDrive 5T 网盘 office365学生版(转载)
  7. 365天 天天学英语
  8. python批量图像处理_基于python代码批量处理图片resize
  9. matplotlib learning-----案例:对比电影的票房收入(3)
  10. Tableau-热力图