精灵碰撞,不可见的矩形
Sprite Collisions, Invisible Rectangles
作为一名程序员,我唯一的兴趣是制作游戏,为此精灵碰撞是绝对必要的我已经知道我的精灵周围需要一个矩形,但我如何才能不让用户看到它?我想在背景之前画它,但你们还有其他方法吗?
碰撞框不是绘制到屏幕上的物理矩形。它们是通过一系列检查精灵边界的条件语句构建的。没有代码很难给出示例,但您可以在 YouTube 上的许多教程中找到此过程的示例。
例如,从DesignsByZepher's Tutorials中获取这段代码:
public boolean hasCollided(int xa,int ya) {
int xMin = 0;
int xMax = 7;
int yMin = 3;
int yMax = 7;
for (int x = xMin; x < xMax; x++) {
if (isSolidTile(xa,ya,x,yMin)) {
return true;
}
}
for (int x = xMin; x < xMax; x++) {
if (isSolidTile(xa,ya,x,yMax)) {
return true;
}
}
for (int y = yMin; y < xMax; y++) {
if (isSolidTile(xa,ya,xMin,y)) {
return true;
}
}
for (int y = yMin; y < xMax; y++) {
if (isSolidTile(xa,ya,xMax,y)) {
return true;
}
}
return false;
}
作为一名程序员,我唯一的兴趣是制作游戏,为此精灵碰撞是绝对必要的我已经知道我的精灵周围需要一个矩形,但我如何才能不让用户看到它?我想在背景之前画它,但你们还有其他方法吗?
碰撞框不是绘制到屏幕上的物理矩形。它们是通过一系列检查精灵边界的条件语句构建的。没有代码很难给出示例,但您可以在 YouTube 上的许多教程中找到此过程的示例。
例如,从DesignsByZepher's Tutorials中获取这段代码:
public boolean hasCollided(int xa,int ya) {
int xMin = 0;
int xMax = 7;
int yMin = 3;
int yMax = 7;
for (int x = xMin; x < xMax; x++) {
if (isSolidTile(xa,ya,x,yMin)) {
return true;
}
}
for (int x = xMin; x < xMax; x++) {
if (isSolidTile(xa,ya,x,yMax)) {
return true;
}
}
for (int y = yMin; y < xMax; y++) {
if (isSolidTile(xa,ya,xMin,y)) {
return true;
}
}
for (int y = yMin; y < xMax; y++) {
if (isSolidTile(xa,ya,xMax,y)) {
return true;
}
}
return false;
}