我正在開發一個受第一個乒乓球游戲啟發的應用程式。所以只有兩個桿和一個球,兩個玩家可以通過用手指移動這些桿來互相挑戰。該應用程式適用于安卓手機并用java開發。
我使用了 gdx lib 框架
這是游戲的風格
樣式示例
這一切似乎都很簡單,直到我不得不發展球的重力。
制作 2d 游戲的重力似乎并不太復雜,但結果卻相當困難。事實上在幾次嘗試后開發游戲我設定了一個隨機重力。簡而言之,球不遵循邏輯,而是相對于擊中螢屏的一側朝著隨機方向移動。
結果就是這個,一個用幾句話生成亂數的函式。
public void gravity(){
switch (gravitylevel){
case 1:
if(gravitychanche){
gravity.setXincrement(rand.getX());
gravity.setYincrement(rand.getY());
}
else{
gravity.setXdecrement(rand.getX());
gravity.setYincrement(rand.getY());
}
break;
case 2:
if(gravitychanche){
gravity.setXdecrement(rand.getX());
gravity.setYdecrement(rand.getY());
}
else{
gravity.setXincrement(rand.getX());
gravity.setYdecrement(rand.getY());
}
break;
case 3:
if(gravitychanche){
gravity.setXdecrement(rand.getX());
gravity.setYdecrement(rand.getY());
}
else{
gravity.setXdecrement(rand.getX());
gravity.setYincrement(rand.getY());
}
break;
case 4:
if(gravitychanche){
gravity.setXincrement(rand.getX());
gravity.setYincrement(rand.getY());
}
else{
gravity.setXincrement(rand.getX());
gravity.setYdecrement(rand.getY());
}
break;
}
}
這段代碼非常簡陋,但是當我嘗試在 lib gdx 上重現相當逼真的重力時,所有指南都強迫我為 3D 游戲制作重力。有沒有辦法在 lib gdx 上創建一個不太復雜的二維重力?
uj5u.com熱心網友回復:
你真的不需要重力。只為球使用速度矢量要容易得多。如果球撞到墻壁或球員的橫桿,您只需反轉速度的 x 或 y 分量。
像這樣的東西(簡化):
public class Game {
private Ball ball;
public void spawnBall() {
ball = new Ball();
ball.velocity = new Vector2(Math.random(), Math.random()); // init with a random vector
}
public void moveBall() {
ball.position = ball.position.add(ball.velocity); // move the ball by it's velocity
}
public void changeBallDirection() {
if (ballHitPlayerBar()) {
ball.velocity.x *= -1; // invert x direction
}
else if (ballHitTopOrBottomOfField()) {
ball.velocity.y *= -1; // invert y direction
}
// TODO maybe move the ball a bit, to prevent it from touching the bar or the field border multiple times...
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/469553.html
