java向各方向移动后输出坐标_java – 移动精灵的方向

我正在做一个简单的突破游戏,我有一些问题要理解我应该如何处理球的速度和方向,以便在不同的对角线路径中移动它.我在更新方法中使用此代码:

xPos += xSpeed * direction;

yPos += ySpeed * direction;

如果我使用xSpeed = 2和YSpeed = 1的不同vaules,我可以改为不同的对角线路径,但我仍然想要相同的速度.如果我增加xSpeed = 4的值以获得另一个对角线路径,那么速度也会增加,我希望球以相同的速度移动.对于方向的值,我使用1或-1.但我想改变方向的值以获得度数的对角线路径会更好吗?在突破性的比赛中,球必须在oppesite方向上反弹.我的数学不好,所以我会提前帮助解决这个问题.我有什么想法可以改进我的代码?

解决方法:

您可以使用正弦和余弦函数来获得x和y轴的相对运动.

喜欢:

xPos += speed * Math.sin(movementAngle);

yPos += speed * Math.cos(movementAngle);

在各种动画中使用上述(polar coordinates)具有易于调整方向或移动速度(分别是速度和移动角度变量)的优点.当使用笛卡尔坐标(x和y位置)时,改变速度或移动方向将需要对x和y进行非明显的改变.

上述解决方案中的公式只不过是从极坐标到笛卡尔坐标的转换.

编辑:为了获得更“自然”的行为,当moveAngle为0意味着向右移动时,PI / 2-up,PI-left和3 * PI / 2-right,请使用以下内容:

xPos += speed * Math.cos(-1*movementAngle);

yPos += speed * Math.sin(-1*movementAngle);

标签:java,math,direction

来源: https://codeday.me/bug/20190625/1285173.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值