Javascript 重叠梯子时如何设置玩家移动能力
我正在写一个简单的平台游戏。我使用平铺贴图为重叠和碰撞创建标高层。我遇到了一个问题:我试图让玩家在与梯子重叠时能够爬上梯子 我在gameSettings对象playerMoveY中有一个变量:false(因此默认情况下,玩家只能向左或向右行走) 当玩家重叠梯子瓷砖时,他可以攀爬,但之后他总是能够攀爬,因为变量playerMoveY仍然=真。我不知道怎么把它换回来。也许使用国旗不是个好主意。我需要建议。多谢各位Javascript 重叠梯子时如何设置玩家移动能力,javascript,phaser-framework,Javascript,Phaser Framework,我正在写一个简单的平台游戏。我使用平铺贴图为重叠和碰撞创建标高层。我遇到了一个问题:我试图让玩家在与梯子重叠时能够爬上梯子 我在gameSettings对象playerMoveY中有一个变量:false(因此默认情况下,玩家只能向左或向右行走) 当玩家重叠梯子瓷砖时,他可以攀爬,但之后他总是能够攀爬,因为变量playerMoveY仍然=真。我不知道怎么把它换回来。也许使用国旗不是个好主意。我需要建议。多谢各位 let gameSettings = { playerSpeed: 60,
let gameSettings = {
playerSpeed: 60,
playerMoveY: false,
}
//here's the code from gameScene class
this.laddersLayer.setTileIndexCallback(29, this.allowClimb, this);
this.physics.add.overlap(this.player, this.laddersLayer);
movePlayerManager() {
if (this.cursorKeys.left.isDown) {
this.player.anims.play('playerWalkLeft', true);
this.player.setVelocityX(-gameSettings.playerSpeed);
} else if (this.cursorKeys.right.isDown) {
this.player.anims.play('playerWalkRight', true);
this.player.setVelocityX(gameSettings.playerSpeed);
} else {
this.player.setVelocityX(0);
this.player.anims.play('playerStand');
}
if (gameSettings.playerMoveY) {
if (this.cursorKeys.up.isDown) {
this.player.anims.play('playerClimb', true);
this.player.setVelocityY(-gameSettings.playerSpeed);
} else if (this.cursorKeys.down.isDown) {
this.player.anims.play('playerClimb', true);
this.player.setVelocityY(gameSettings.playerSpeed);
} else {
this.player.setVelocityY(0);
}
}
}
//and here's the callback function when overlap
allowClimb() {
gameSettings.playerMoveY = true;
}
您当前仅检查玩家是否与阶梯重叠,然后设置:
gameSettings.playerMoveY=true代码>。您需要检查其他类型的瓷砖。我从未使用过tiled,因此我不知道它是如何工作的,但我建议尝试在更新函数中实现类似的功能:
//this is just sudo code
if(player.byLadder() == true){
player.canClimb = true;
}else{
player.canClimb = false;
}
函数必须在玩家可以攀爬的任何时候(攀爬之前、攀爬期间、攀爬结束时)返回true。再次,我为没有更具体的代码表示歉意,因为我从未接触过平铺。您需要一种不同的方法来检测阶梯平铺,因为使用当前的方法,您还必须为所有其他平铺设置平铺索引,该平铺索引将重置游戏设置。playerMoveY
为false
,用于除阶梯平铺以外的所有平铺。