java如何在处理中获得对象X的位置
我正在努力制造太空入侵者。我目前正在努力让敌人正确移动。我已经把它们画在了正确的位置,但是我没有把它们正确地移动。这是我的代码:
PImage mainPlayer;
PImage enemyPlayer;
float Xspeed = 60;
float Yspeed = 60;
float X;
float Y;
Enemy EnemyPlayer = new Enemy("EnemyPlayerSpaceInvaders.png", 10, 10, 6);
void setup() {
size(1400, 800);
//enemyPlayer = loadImage("EnemyPlayerSpaceInvaders.png");
mainPlayer = loadImage("MainPlayerSpaceInvaders.png");
}
void draw() {
background(0);
Enemy[] enemyPlayer = new Enemy[60];
for (int i = 0; i < 5; i += 1) {
for (int j = 0; j < 11; j += 1) {
enemyPlayer[j *i] = new Enemy("EnemyPlayerSpaceInvaders.png", 50 + j * 100, 5 + 75 * i, 6);
}
}
for (int i = 0; i < 5; i += 1) {
for (int j = 0; j < 11; j += 1) {
if(enemyPlayer[j * i].alive){
enemyPlayer[j * i].Draw();
}
enemyPlayer[j *i].moveAndDraw(6);
}
}
}
class Enemy {
boolean alive = true;
float x;
float y;
float speed;
String playerTexFile;
PImage playerTex;
Enemy(String PlayerTexFile, float X, float Y, float Speed){
x = X;
y = Y;
speed = Speed;
playerTexFile = PlayerTexFile;
}
void Draw(){
playerTex = loadImage(playerTexFile);
image(playerTex, x, y);
}
void moveAndDraw(float Speed){
playerTex = loadImage(playerTexFile);
if(alive){
x += Speed;
if (x >= 1300) {
x = 100;
y += 50;
}
}
}
}
Draw函数可以工作,但是你看到的是moveAndDraw()
函数
敌人的图纸没有移动。我以前用C++ SFML做过这个,但是这里有一个非常基本的GET位置函数。我想得到位置的原因是,现在我必须使用不准确的数字作为X和Y位置,为了让敌人正确移动,我需要确切地知道它的位置。我查看了多页关于处理的内容。但他们都没有帮助。我还没有发现任何getPosition void,我见过其他人使用void来实现这一点,但我就是没能让它发挥作用。如果有一些代码可以让我实现这个功能,或者只是一些我看过的功能,甚至是一个我可以查看的网页,我都会乐于接受。请告诉我我能做些什么来让它工作
# 1 楼答案
问题是你在每一帧的初始位置重新创建敌人:
你必须:
Enemy[] enemyPlayer
(并删除PImage enemyPlayer
)李>进一步注意,你的循环并没有达到你期望的效果。在2个嵌套循环中创建敌人。如果
i
从0运行到6,并且j
从0运行到10,则敌人的索引是i*10 + j
敌人可以在一个循环中从0移动到
enemyPlayer.length