「私は単純なゲームを作っていますが、その一部として、あなたを攻撃する敵がいるようにしたいと思っています. これを最初に行うには、それらを動かす必要があります。このコードでは、「敵」は単なるボールです。ボールの位置として「mob1」というオブジェクトを使用しているので、後で複数のボールを持つことができます。
(ところで、私はSlickを使用しています-それが何かを変える場合に備えて)
私のゲームの状態 -
package Worlds.World1;
import org.lwjgl.input.Mouse;
import org.newdawn.slick.Animation;
import org.newdawn.slick.Color;
import org.newdawn.slick.GameContainer;
import org.newdawn.slick.Graphics;
import org.newdawn.slick.Image;
import org.newdawn.slick.Input;
import org.newdawn.slick.SlickException;
import org.newdawn.slick.state.BasicGameState;
import org.newdawn.slick.state.StateBasedGame;
import Main.SimpleMob;
public class World1A extends BasicGameState{
String mousePosition;
Image world;
Animation player, playerLeft, playerRight;
int[] duration = {200,200};
float playerX;
float playerY;
float WorldX;
float WorldY;
float PlayerVisibleScreenX;
float PlayerVisibleScreenY;
String MovementDirection;
SimpleMob mob1 = new SimpleMob();
public World1A(int state){
}
public void init(GameContainer gc, StateBasedGame sbg) throws SlickException{
Image [] WalkingLeft = {new Image("res/Sprites/buckysLeft.png"),new Image("res/Sprites/buckysLeft.png")};
Image [] WalkingRight = {new Image("res/Sprites/buckysRight.png"),new Image("res/Sprites/buckysRight.png")};
playerLeft = new Animation(WalkingLeft, duration, false);
playerRight = new Animation(WalkingRight, duration, false);
player = playerRight;
playerX = 0;
playerY = 0;
WorldX = 0;
WorldY = 0;
world= new Image("res/WorldImages/WorldBackGround.png");
mousePosition="null";
MovementDirection = "Not Moved Yet";
}
public void render(GameContainer gc, StateBasedGame sbg, Graphics g) throws SlickException{
world.draw(WorldX, WorldY);
g.setColor(Color.white);
g.fillOval(WorldX+mob1.getX(), WorldY+mob1.getY(), 50, 50);
g.fillRect(WorldX, WorldY+300, 500, 10);
}
public void update(GameContainer gc, StateBasedGame sbg, int delta) throws SlickException{
mob1.autoEveryThing(delta, playerX, playerY);
int posX = Mouse.getX();
int posY = Mouse.getY();
mousePosition = "X: " + posX + "\nY: " + posY;
Input input = gc.getInput();
if(input.isKeyDown(Input.KEY_LEFT)){
WorldX += delta * 0.1f;
MovementDirection = "Left";
player = playerLeft;
}else if(input.isKeyDown(Input.KEY_RIGHT)){
WorldX -= delta * 0.1f;
MovementDirection = "Right";
player = playerRight;
}else{
MovementDirection = "Not Moving";
}
}
//DO NOT CHANGE
public int getID(){
return 2;
}
}
そして私の暴徒クラス-
package Main;
import org.newdawn.slick.Graphics;
public class SimpleMob {
//This class shall be used as an object creator. This will randomly move a graphic around, near to a player
private float MobX;
private float MobY;
private int AmountMoved = 0;
private boolean MoveRight = true;
private boolean MoveLeft;
private boolean PlayerNear = false;
public boolean PlayerDetected = false;
//Used to find the mobs X
public float getX(){
return MobX;
}
//Used to find the mobs Y
public float getY(){
return MobY;
}
//Used to set the mobs X
public void setX(float X){
MobX = X;
}
//Used to set the mobs Y
public void setY(float Y){
MobY = Y;
}
//Used to simply move the mob on its X co-ords
public void moveX(int delta){
MobX += delta*0.1f;
}
//Used to simply move the mob on its Y co-ords
public void moveY(int delta){
MobY += delta*0.1f;
}
public void autoEveryThing(int delta, float playerX, float playerY) {
System.out.println(AmountMoved);
// If the player has not been spotted the NPC/Mob will move left and
// right by 100 Pixels.
if (MoveRight == true) {
AmountMoved++;
MobX += delta * 0.1f;
if (AmountMoved == 100) {
MoveRight = false;
MoveLeft = true;
AmountMoved = 0;
}
}
if (MoveLeft == true) {
MobX -= delta * 0.1f;
AmountMoved++;
if (AmountMoved == 100) {
MoveRight = true;
MoveLeft = false;
AmountMoved = 0;
}
}
}
}
これに関するヘルプは良いでしょう(または、モブを作成するためのより正確で簡単な方法がある場合)
ありがとう