Class 如何从场景中的另一个类调用变量和函数?
我正在制作一个小的原型游戏,它使用扩展类(不确定这叫什么),我正在尝试检测玩家和地面块之间的碰撞。我的问题是,处理过程表明“player”不能解析为变量。因此,我不能使用Player类中的任何变量来检测任何类型的冲突 如果你有任何问题需要回答以帮助我,我会很乐意回答 这是游戏场景课Class 如何从场景中的另一个类调用变量和函数?,class,variables,processing,Class,Variables,Processing,我正在制作一个小的原型游戏,它使用扩展类(不确定这叫什么),我正在尝试检测玩家和地面块之间的碰撞。我的问题是,处理过程表明“player”不能解析为变量。因此,我不能使用Player类中的任何变量来检测任何类型的冲突 如果你有任何问题需要回答以帮助我,我会很乐意回答 这是游戏场景课 public class PlayScene extends GameScene { public WorldBlocks blocks; public Player player; public Pl
public class PlayScene extends GameScene {
public WorldBlocks blocks;
public Player player;
public PlayScene() {
blocks = new WorldBlocks();
player = new Player();
}
public void Update() {
if (!blocks.levelLoaded) {
blocks.spawnGroundBlocks();
player.spawnPlayer();
}
blocks.updateGroundBlocks();
}
public void Draw() {
background(255);
blocks.drawGroundBlocks();
}
}
这是玩家级
class Player {
public float x, y, xVelocity, yVelocity, playerSize;
public boolean groundCollision;
void spawnPlayer() {
x = width/25;
y = height - height/3;
xVelocity = 0;
yVelocity = 0;
playerSize = width/35;
}
void updatePlayer() {
}
}
这是WorldBlocks类(问题是分开的)
if(x[i]<-块大小/2){
x[i]+=宽度+块大小;
}
如果(x[i]>宽度+块大小/2){
x[i]=宽度+块大小;
}
}
}
空心砌块(){
对于(int i=0;i<块的数量;i++){
填充(块颜色[i]);
正方形(x[i],y[i],块大小);
}
}
}
扩展类被恰当地称为继承
在代码中:
类的实例每个都有一个playsecene
Player
未在Player
类中定义WorldBlocks
WorldBlocks
类中引用一个播放器实例(带有player.y
和类似内容)时,将找不到任何东西。这就是“player”的处理意味着无法解析为变量-它无法在WorldBlocks
类的范围内找到player
对象
要在
WorldBlocks
类中对播放器调用方法,它需要对player
实例的引用
提供此参考的一种方法是通过构造函数;修改WorldBlocks
类,如下所示:
class WorldBlocks {
private player;
public WorldBlocks(Player player) {
this.player = player;
}
}
修改playsecene
构造函数,如下所示:
public PlayScene() {
player = new Player();
blocks = new WorldBlocks(player);
}
现在,当您在
WorldBlocks
类的碰撞循环中引用播放器(player.y
)时,它知道要引用什么——它将调用属于该WorldBlocks
实例的private player
对象
if (x[i] < - BLOCK_SIZE/2) {
x[i] += width + BLOCK_SIZE;
}
if (x[i] > width + BLOCK_SIZE/2) {
x[i] -= width + BLOCK_SIZE;
}
}
}
void drawGroundBlocks() {
for (int i = 0; i < NUMBER_OF_BLOCKS; i++) {
fill(blockColor[i]);
square(x[i], y[i], BLOCK_SIZE);
}
}
}
class WorldBlocks {
private player;
public WorldBlocks(Player player) {
this.player = player;
}
}
public PlayScene() {
player = new Player();
blocks = new WorldBlocks(player);
}