P
Polli85
Gast
Hi an alle,
hab mein RPG-Projekt ein bischen ausgebaut, durch die Hilfe des
Tutorials von Quaxli ---> Tutorial
habe ich nun kein Problem mehr mit dem Player Sprite.
Aber ich weiß nicht wie ich es hinbekommen soll mit der Sprite Klasse
einen RPG NPC zu machen, der zufällig auf der Map rumläuft.
Außerdem wie ich das in die GamePanel klasse einbauen kann
das es irgendwie flüssig aussieht und nicht so abgehackt
?!?
Meine Sprite Klasse sieht der von Quaxlis Beispiel sehr ähnlich,
blos auf die Bedürfnisse eines RPG-Sprites angepasst
Hoffe jemand kann helfen
Gruß Polli
hab mein RPG-Projekt ein bischen ausgebaut, durch die Hilfe des
Tutorials von Quaxli ---> Tutorial
habe ich nun kein Problem mehr mit dem Player Sprite.
Aber ich weiß nicht wie ich es hinbekommen soll mit der Sprite Klasse
einen RPG NPC zu machen, der zufällig auf der Map rumläuft.
Außerdem wie ich das in die GamePanel klasse einbauen kann
das es irgendwie flüssig aussieht und nicht so abgehackt
Meine Sprite Klasse sieht der von Quaxlis Beispiel sehr ähnlich,
blos auf die Bedürfnisse eines RPG-Sprites angepasst
Code:
public abstract class Sprite extends Rectangle2D.Double implements Movable, Drawable{
public final int spriteNr = 256;
long delay;
long animation = 0;
GamePanel parent;
BufferedImage[] pics;
private final int sWidth = 32;
private final int sHeight= 32;
public int currentPic = 0;
public int playerMap = 0;
protected double dx;
protected double dy;
public boolean mapChangeUp = false;
public boolean mapChangeDown = false;
public boolean mapChangeLeft = false;
public boolean mapChangeRight = false;
public boolean walking = false;
public int dir = 0;
public Sprite(BufferedImage[] img, double x, double y, long delay, GamePanel pan){
pics = img;
this.x = x;
this.y = y;
this.width = sWidth;
this.height = sHeight;
this.delay = delay;
parent = pan;
}
public void doLogic(long delta) {
animation += (delta/1000000);
if(animation > delay){
animation = 0;
doAnimation();
}
}
private void doAnimation() {
if(walking){
currentPic++;
//UP
if(dir == 0){
if(currentPic >=3){
currentPic = 0;
}
}
// DOWN
else if(dir == 1){
if(currentPic >=6){
currentPic = 3;
}
}
// LEFT
else if(dir == 2){
if(currentPic >=9){
currentPic = 6;
}
}
// RIGHT
else if(dir == 3){
if(currentPic >=12){
currentPic = 9;
}
}
// else if(currentPic >= pics.length){
// currentPic= 0;
// }
}
}
public boolean checkCollsion(Rectangle2D.Double block) {
if(block.intersects(this)){
return true;
}
return false;
}
public void move(long delta) {
if(dx != 0){
x += dx * (delta/1e9);
}
if(dy != 0){
y += dy * (delta/1e9);
}
}
public void isMapchange(){
if(x > 612){
mapChangeUp = false;
mapChangeDown = false;
mapChangeLeft = false;
mapChangeRight = true;
}else if( x < -4){
mapChangeUp = false;
mapChangeDown = false;
mapChangeLeft = true;
mapChangeRight = false;
}else if(y > 420){
mapChangeUp = false;
mapChangeDown = true;
mapChangeLeft = false;
mapChangeRight = false;
}else if(y < -36){
mapChangeUp = true;
mapChangeDown = false;
mapChangeLeft = false;
mapChangeRight = false;
}else{
mapChangeUp = false;
mapChangeDown = false;
mapChangeLeft = false;
mapChangeRight = false;
}
}
public void drawObjects(Graphics g) {
g.drawImage(pics[currentPic],(int)x,(int)y,null);
}
public double getDx() {
return dx;
}
public void setDx(double dx) {
this.dx = dx;
}
public double getDy() {
return dy;
}
public void setDy(double dy) {
this.dy = dy;
}
public synchronized int getCurrentPic() {
return currentPic;
}
public synchronized void setCurrentPic(int currentPic) {
this.currentPic = currentPic;
}
}
Hoffe jemand kann helfen
Gruß Polli