我有一個基於設備的pitch
和roll
旋轉的精靈。 ,我使用旋轉精靈的代碼是:使用加速度計在精靈旋轉時彈出精靈
double myRadians = Math.atan2(-Gdx.input.getRoll(), Gdx.input.getPitch());
float myDegress = Math.round(((myRadians*180)/Math.PI));
我還設置了精靈的像這樣的位置:
float yChange = Math.round(Gdx.input.getRoll());
float xChange = Math.round(-Gdx.input.getPitch());
float yMove = Math.round(yChange/1.5);
float xMove = Math.round(xChange/1.5);
現在,當過此精靈對象與「牆」碰撞我希望它反彈回來。但首先鏡像。 我已經做到了,像這樣:
// mirror sprite
// pitchAndRoll is a Vector2 and set to the pitch and roll
// at the time of collision
float flippedRotation = sprite.getRotation() * -1;
float yChange = Math.round(pitchAndRoll.y);
float xChange = Math.round(-pitchAndRoll.x);
if (whichWall.equals(Walls.WALL_LEFT)){
// left wall
flippedRotation = sprite.getRotation() * -1;
xChange = Math.round(pitchAndRoll.x);
}else if (whichWall.equals(Walls.WALL_RIGHT)){
// right wall
flippedRotation = sprite.getRotation() * -1;
xChange = Math.round(pitchAndRoll.x);
}else if (whichWall.equals(Walls.WALL_BOTTOM)){
// bottom wall
flippedRotation += 180;
yChange = Math.round(-pitchAndRoll.y);
}else if (whichWall.equals(Walls.WALL_TOP_LEFT)){
// top left wall
flippedRotation += 180;
yChange = Math.round(-pitchAndRoll.y);
}else if (whichWall.equals(Walls.WALL_TOP_RIGHT)){
// top right wall
flippedRotation += 180;
yChange = Math.round(-pitchAndRoll.y);
}
牆壁分別都是完美的水平和垂直。
第一次碰撞很好,發生的任何其他碰撞,精靈正好穿過牆壁。
但是我的主要問題是,由於使用設備的加速度計控制精靈,如果用戶使設備向下指向,精靈將向下移動,撞上牆壁,彈回,然後向下移動,循環繼續。我想防止這種情況發生,但不能想到如何。
這很難解釋,所以我這裏有一些圖片是希望更有意義=]
我希望這些圖片給你一個更好地瞭解我正在努力做,如果你能在任何方面,幫助我,或指向正確的方向,或任何替代品將是驚人的! 在此先感謝。
嘗試增加重力。每一幀,都向天空方向增加一些推力速度。就像火箭一直在試圖逃脫電話一樣。 – Axoren
但這個想法是,如果設備是水平的,精靈不會移動。該設備實際上應該是平坦的。我是LibGdx的新手,所以我將不得不研究框架。謝謝! – user959631