leap-before-look-then-undo
This commit is contained in:
parent
f5f0c447aa
commit
f8eacc5904
1 changed files with 27 additions and 21 deletions
|
@ -42,16 +42,18 @@ func (a *Actor) MoveX(x float64, onCollide func()) {
|
|||
a.xRem -= float64(move)
|
||||
sign := sign(move)
|
||||
for move != 0 {
|
||||
if a.CollidesAt(a.Pos.Add(Pt3(sign, 0, 0))) {
|
||||
a.Pos.X += sign
|
||||
move -= sign
|
||||
if !a.CollidesAt(a.Pos) {
|
||||
continue
|
||||
}
|
||||
if onCollide != nil {
|
||||
onCollide()
|
||||
}
|
||||
a.Pos.X -= sign
|
||||
a.xRem = 0
|
||||
return
|
||||
}
|
||||
a.Pos.X += sign
|
||||
move -= sign
|
||||
}
|
||||
}
|
||||
|
||||
func (a *Actor) MoveY(y float64, onCollide func()) {
|
||||
|
@ -63,16 +65,18 @@ func (a *Actor) MoveY(y float64, onCollide func()) {
|
|||
a.yRem -= float64(move)
|
||||
sign := sign(move)
|
||||
for move != 0 {
|
||||
if a.CollidesAt(a.Pos.Add(Pt3(0, sign, 0))) {
|
||||
a.Pos.Y += sign
|
||||
move -= sign
|
||||
if !a.CollidesAt(a.Pos) {
|
||||
continue
|
||||
}
|
||||
if onCollide != nil {
|
||||
onCollide()
|
||||
}
|
||||
a.Pos.Y -= sign
|
||||
a.yRem = 0
|
||||
return
|
||||
}
|
||||
a.Pos.Y += sign
|
||||
move -= sign
|
||||
}
|
||||
}
|
||||
|
||||
func (a *Actor) MoveZ(z float64, onCollide func()) {
|
||||
|
@ -84,16 +88,18 @@ func (a *Actor) MoveZ(z float64, onCollide func()) {
|
|||
a.zRem -= float64(move)
|
||||
sign := sign(move)
|
||||
for move != 0 {
|
||||
if a.CollidesAt(a.Pos.Add(Pt3(0, 0, sign))) {
|
||||
a.Pos.Z += sign
|
||||
move -= sign
|
||||
if !a.CollidesAt(a.Pos) {
|
||||
continue
|
||||
}
|
||||
if onCollide != nil {
|
||||
onCollide()
|
||||
}
|
||||
a.Pos.Z -= sign
|
||||
a.zRem = 0
|
||||
return
|
||||
}
|
||||
a.Pos.Z += sign
|
||||
move -= sign
|
||||
}
|
||||
}
|
||||
|
||||
func (a *Actor) Prepare(g *Game) error {
|
||||
|
|
Loading…
Reference in a new issue