gpt4 book ai didi

java - 我需要帮助在 java 平台游戏中创建碰撞系统

转载 作者:太空宇宙 更新时间:2023-11-04 09:33:20 26 4
gpt4 key购买 nike

我正在使用处理创建一个简单的平台游戏,需要帮助找到一种让我的玩家角色与平台交互的方法,特别是让他们站在平台之上。

我尝试将玩家与平台交互时的速度设置为零,但在尝试到达平台顶部时会产生问题,玩家会下沉而不是留在顶部。

    public void setup() {
background=loadImage("Sprites/Test Background-1.png.png");
playerSprite= new AnimatedSprite("Idle animation", 8);
blocks[0]= new BlockCollision();
blocks[0].Sprite = loadImage("Sprites/Platform Small-1.png.png" );
blocks[0].x = 250;
blocks[0].y = 250;
blocks[0].width = 64;
blocks[0].height= 64;
blocks[1]= new BlockCollision();
blocks[1].Sprite = loadImage("Sprites/Platform Small-1.png.png" );
blocks[1].x = 0;
blocks[1].y = 0;
blocks[1].width = 64;
blocks[1].height = 64;
blocks[2]= new BlockCollision();
blocks[2].Sprite = loadImage("Sprites/Platform Small-1.png.png");
blocks[2].x = 300;
blocks[2].y = 400;
blocks[2].width = 64;
blocks[2].height = 64;

}
public void settings() {
size (500, 500);
}
public void draw() {
background(background);
if(grounded==false){
playerVelocity.y += 1;
}
playerPosition.x +=
playerVelocity.x;
playerPosition.y +=
playerVelocity.y;
if (playerPosition.y > 468) {
playerPosition.y = 468;
playerVelocity.y = 0;
jumpAmount=0;
}
playerSprite.animate
(playerPosition.x, playerPosition.y);
//checks for if it touches any side of the platform
if(playerPosition.y+ playerDimensions>= blocks[0].y
&& playerPosition.x+ blockDimensions>=blocks[0].x
&&playerPosition.y<=blocks[0].y+blockDimensions
&& playerPosition.x<=blocks[0].x){
//sets velocity to zero to ensure that any other interaction with the platform works
playerVelocity.x=0;
playerVelocity.y=0;

if(playerPosition.y+ blockDimensions<=blocks[0].y){
grounded=true;
}
else grounded = false;
}


image(blocks[0].Sprite, blocks[0].x, blocks[0].y);
image(blocks[1].Sprite,blocks[1].x,blocks[1].y);
image(blocks[2].Sprite,blocks[2].x,blocks[2].y);
}

玩家本应仍停留在平台上,但玩家却沉入了平台。

最佳答案

一种解决方案可以是障碍物矩阵,填充 0 表示允许(移动),填充 1 表示不允许移动(如果到达则停留在那里)矩阵大小可以反射(reflect)屏幕大小,例如(800x600)。为了更方便使用,您可以假设 1 平方 = 4x4 像素,并将矩阵大小从 (800x600) 减小到 (200x150)。

其他解决方案可以通过结合对象类型(地面、敌人、障碍物)检查其他对象的某些矩形部分来完成。基本上所有对象都可以包裹在各种矩形形状内(如果需要精确的碰撞,则可以更复杂)。

关于java - 我需要帮助在 java 平台游戏中创建碰撞系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56818621/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com