Java 改变速度方向不起作用
我身体的速度变化有问题。 正常情况下,直线度为3f,当物体与墙壁碰撞时,速度应在-3f处变化。但当它这样做时,它会在0左右 代码如下:Java 改变速度方向不起作用,java,libgdx,box2d,Java,Libgdx,Box2d,我身体的速度变化有问题。 正常情况下,直线度为3f,当物体与墙壁碰撞时,速度应在-3f处变化。但当它这样做时,它会在0左右 代码如下: private void createPlayer(){ ... bdef.velocity.set(-3f,0); ... } private void render(){ ... world.step(V.STEP, V.VELOCITYITERATIONS, V.POSITIONITERATIONS); if(cHandler.changeVel
private void createPlayer(){
...
bdef.velocity.set(-3f,0);
...
}
private void render(){
...
world.step(V.STEP, V.VELOCITYITERATIONS, V.POSITIONITERATIONS);
if(cHandler.changeVelocity())
ball.getBody().setLinearVelocity(-ball.getBody().getLinearVelocity().x, 0);
...
}
我已经在beginContact、endContact、presolve和endsolve中尝试过了,但它总是在0左右
当我将碰撞检测设置为beginContact并手动将其设置为-3f时,它就是-3f,但跳跃不再正常工作,我的意思是重力不再将球抓向地面
当我手动设置时:
if(cHandler.changeVelocity()){
ball.getBody().setLinearVelocity(-3f, 0);
}
之前的日志:
velocityX: 3.0022564 velocityY: -5.261436
及之后:
velocityX: -3.0 velocityY: 0.0
p、 世界引力是(0,-10)
我希望你能帮助我
谢谢 有什么原因不想让box2d为您处理碰撞吗?它会产生你想要的结果。你不需要检测碰撞并手动更改速度,box2d将为你应用碰撞力。这不起作用,因为球应该继续向右/向左移动,当我设置恢复时,它反弹正常,但它会向右移动,不会从右向左移动。。。或者你打算怎么做?在BeginContact中,你可以记下碰撞开始时速度的方向。然后在EndContact中,您可以将速度设置为与之相反的速度。这可能会演示我的意思,在应用程序运行后单击box2d,然后您可以将身体四处抛。