我如何使一个对象跳一次,直到它接触土地/地面在Kaboom.js


import kaboom from "kaboom"
const SPEED = 300
const JUMP_FORCE = 500
const GRAVITY_AMOUNT = 1000
// initialize context
kaboom({
background: "#000"
})

// load assets
loadSprite("player", "sprites/player.png")
loadSprite("spider", "sprites/spider.png")
loadSprite("floor", "sprites/floor.png")
gravity(GRAVITY_AMOUNT)

const player = add([
sprite("player"),
pos(250, height() - 100),
area(),
body()
])

const grass = add([
rect(width(), 16),
pos(0, height() - 64),
area(),
solid(),
color(60, 21, 176)
])
const land = add([
rect(width(), 48),
pos(0, height() - 48),
area(),
solid(),
color(14, 15, 97)
])
onKeyPress("space", () => {
player.jump(JUMP_FORCE)
})
onKeyDown("a", () => {
player.move(-SPEED, 0)
})
onKeyDown("d", () => {
player.move(SPEED, 0)
})
var floor = add([
sprite("floor"),
scale(0.5),
pos(120, height() - 150),
area(),
z(-1)
])
action(() => {
if(player.pos.y < height() - floor.height){
floor.use(body())
}
})
onMouseDown(() => {
player.jump(JUMP_FORCE)
})
onTouchStart(() => {
player.jump(JUMP_FORCE)
})

这是我用koom .js编写的游戏源代码我想让跳跃事件只在玩家在陆地上时发生。不要再在空中跳了。如果有人帮助我,我真的很感激,因为我是新的在koom .js

.................................................................................................

对于您的问题,我建议使用:

player.isGrounded()

当玩家触地或未触地时返回。

例如:

onKeyPress("space", () => {
if(player.isGrounded()) {
player.jump(JUMP_FORCE)
}
})

希望这有助于解决您的问题!

最新更新