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

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值