fix neighs undefined by different lookup method
This commit is contained in:
parent
33876d44d5
commit
1c9e4d5aa4
@ -64,6 +64,10 @@ export class Player {
|
|||||||
this.model.position.set(v.x, v.y, v.z + 1)
|
this.model.position.set(v.x, v.y, v.z + 1)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
findVoxelByPos(x: number, y: number, z: number): Voxel | undefined {
|
||||||
|
return this.voxels.find(v => v.x === x && v.y === y && v.z === z)
|
||||||
|
}
|
||||||
|
|
||||||
reset() {
|
reset() {
|
||||||
this.voxelStandingOn = this.voxels[this.level.playerPos.voxelIdx]
|
this.voxelStandingOn = this.voxels[this.level.playerPos.voxelIdx]
|
||||||
this.setToVoxelPosition(this.voxelStandingOn)
|
this.setToVoxelPosition(this.voxelStandingOn)
|
||||||
@ -114,13 +118,23 @@ export class Player {
|
|||||||
}
|
}
|
||||||
|
|
||||||
jump() {
|
jump() {
|
||||||
|
if (!this.voxelStandingOn?.neighs) {
|
||||||
|
this.doneAnimating()
|
||||||
|
return
|
||||||
|
}
|
||||||
let x0 = this.voxelStandingOn
|
let x0 = this.voxelStandingOn
|
||||||
let nextVoxel = this.voxelStandingOn.neighs[this.direction]
|
let nextVoxel = this.voxelStandingOn.neighs[this.direction]
|
||||||
if (nextVoxel["up"]) {
|
if (nextVoxel["up"]) {
|
||||||
this.voxelStandingOn = nextVoxel["up"]
|
const targetX = nextVoxel["up"].x
|
||||||
|
const targetY = nextVoxel["up"].y
|
||||||
|
const targetZ = nextVoxel["up"].z
|
||||||
|
this.voxelStandingOn = this.findVoxelByPos(targetX, targetY, targetZ) || nextVoxel["up"]
|
||||||
}
|
}
|
||||||
if (nextVoxel["down"]) {
|
if (nextVoxel["down"]) {
|
||||||
this.voxelStandingOn = nextVoxel["down"]
|
const targetX = nextVoxel["down"].x
|
||||||
|
const targetY = nextVoxel["down"].y
|
||||||
|
const targetZ = nextVoxel["down"].z
|
||||||
|
this.voxelStandingOn = this.findVoxelByPos(targetX, targetY, targetZ) || nextVoxel["down"]
|
||||||
}
|
}
|
||||||
this.actions['Jump'].reset()
|
this.actions['Jump'].reset()
|
||||||
this.actions['Jump'].play()
|
this.actions['Jump'].play()
|
||||||
@ -157,9 +171,16 @@ export class Player {
|
|||||||
}
|
}
|
||||||
|
|
||||||
forward() {
|
forward() {
|
||||||
|
if (!this.voxelStandingOn?.neighs) {
|
||||||
|
this.doneAnimating()
|
||||||
|
return
|
||||||
|
}
|
||||||
let nextVoxel = this.voxelStandingOn.neighs[this.direction]
|
let nextVoxel = this.voxelStandingOn.neighs[this.direction]
|
||||||
if (nextVoxel["forward"]) {
|
if (nextVoxel["forward"]) {
|
||||||
this.voxelStandingOn = nextVoxel["forward"]
|
const targetX = nextVoxel["forward"].x
|
||||||
|
const targetY = nextVoxel["forward"].y
|
||||||
|
const targetZ = nextVoxel["forward"].z
|
||||||
|
this.voxelStandingOn = this.findVoxelByPos(targetX, targetY, targetZ) || nextVoxel["forward"]
|
||||||
let x = this.model.position.x
|
let x = this.model.position.x
|
||||||
let y = this.model.position.y
|
let y = this.model.position.y
|
||||||
this.actions['Walking'].reset()
|
this.actions['Walking'].reset()
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user