mirror of
https://github.com/libretro/lutro-platformer.git
synced 2024-11-27 10:10:29 +00:00
Include obake npc
This commit is contained in:
parent
ef16c2eecc
commit
e99d82a372
Before Width: | Height: | Size: 601 B After Width: | Height: | Size: 601 B |
Before Width: | Height: | Size: 604 B After Width: | Height: | Size: 604 B |
@ -44,6 +44,7 @@ function solid_at(x, y, exclude)
|
|||||||
|
|
||||||
if x >= e.x and x < e.x + e.width
|
if x >= e.x and x < e.x + e.width
|
||||||
and y >= e.y and y < e.y + e.height
|
and y >= e.y and y < e.y + e.height
|
||||||
|
and e.type == "ground"
|
||||||
and e ~= exclude
|
and e ~= exclude
|
||||||
then
|
then
|
||||||
return true;
|
return true;
|
||||||
|
5
main.lua
5
main.lua
@ -2,6 +2,7 @@ require "global"
|
|||||||
require "tiled"
|
require "tiled"
|
||||||
require "anim"
|
require "anim"
|
||||||
require "ninja"
|
require "ninja"
|
||||||
|
require "obake"
|
||||||
|
|
||||||
function lutro.conf(t)
|
function lutro.conf(t)
|
||||||
t.width = SCREEN_WIDTH
|
t.width = SCREEN_WIDTH
|
||||||
@ -25,7 +26,9 @@ function lutro.load()
|
|||||||
lutro.graphics.setFont(font)
|
lutro.graphics.setFont(font)
|
||||||
map = tiled_load("assets/pagode.json")
|
map = tiled_load("assets/pagode.json")
|
||||||
tiled_load_objects(map, add_entity_from_map)
|
tiled_load_objects(map, add_entity_from_map)
|
||||||
table.insert(entities, newNinja())
|
ninja = newNinja()
|
||||||
|
table.insert(entities, ninja)
|
||||||
|
table.insert(entities, newObake())
|
||||||
end
|
end
|
||||||
|
|
||||||
function lutro.update(dt)
|
function lutro.update(dt)
|
||||||
|
20
ninja.lua
20
ninja.lua
@ -172,14 +172,18 @@ function ninja:draw()
|
|||||||
end
|
end
|
||||||
|
|
||||||
function ninja:on_collide(e1, e2, dx, dy)
|
function ninja:on_collide(e1, e2, dx, dy)
|
||||||
if math.abs(dy) < math.abs(dx) and dy ~= 0 then
|
if e2.type == "ground" then
|
||||||
self.yspeed = 0
|
|
||||||
self.y = self.y + dy
|
if math.abs(dy) < math.abs(dx) and dy ~= 0 then
|
||||||
lutro.audio.play(self.sfx.step)
|
self.yspeed = 0
|
||||||
end
|
self.y = self.y + dy
|
||||||
|
lutro.audio.play(self.sfx.step)
|
||||||
|
end
|
||||||
|
|
||||||
|
if math.abs(dx) < math.abs(dy) and dx ~= 0 then
|
||||||
|
self.xspeed = 0
|
||||||
|
self.x = self.x + dx
|
||||||
|
end
|
||||||
|
|
||||||
if math.abs(dx) < math.abs(dy) and dx ~= 0 then
|
|
||||||
self.xspeed = 0
|
|
||||||
self.x = self.x + dx
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
62
obake.lua
Normal file
62
obake.lua
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
require "collisions"
|
||||||
|
|
||||||
|
local obake = {}
|
||||||
|
obake.__index = obake
|
||||||
|
|
||||||
|
function newObake()
|
||||||
|
local n = {}
|
||||||
|
n.width = 16
|
||||||
|
n.height = 16
|
||||||
|
n.xspeed = 0
|
||||||
|
n.yspeed = 0
|
||||||
|
n.x = (SCREEN_WIDTH - n.width)
|
||||||
|
n.y = 180
|
||||||
|
n.direction = "left"
|
||||||
|
n.stance = "fly"
|
||||||
|
n.t = 0
|
||||||
|
|
||||||
|
n.animations = {
|
||||||
|
fly = {
|
||||||
|
left = newAnimation(lutro.graphics.newImage(
|
||||||
|
"assets/obake_fly_left.png"), 48, 48, 100, 10),
|
||||||
|
right = newAnimation(lutro.graphics.newImage(
|
||||||
|
"assets/obake_fly_right.png"), 48, 48, 100, 10)
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
n.anim = n.animations[n.stance][n.direction]
|
||||||
|
return setmetatable(n, obake)
|
||||||
|
end
|
||||||
|
|
||||||
|
function obake:update(dt)
|
||||||
|
self.t = self.t + dt
|
||||||
|
|
||||||
|
-- apply speed
|
||||||
|
self.x = self.x + self.xspeed * dt;
|
||||||
|
|
||||||
|
self.x = self.x + math.cos(self.t/2.0) / 2.0
|
||||||
|
self.y = self.y + math.cos(self.t*2.0) / 4.0
|
||||||
|
|
||||||
|
if self.x > ninja.x then
|
||||||
|
self.direction = "left"
|
||||||
|
else
|
||||||
|
self.direction = "right"
|
||||||
|
end
|
||||||
|
|
||||||
|
local anim = self.animations[self.stance][self.direction]
|
||||||
|
-- always animate from first frame
|
||||||
|
if anim ~= self.anim then
|
||||||
|
anim.timer = 0
|
||||||
|
end
|
||||||
|
self.anim = anim;
|
||||||
|
|
||||||
|
self.anim:update(dt)
|
||||||
|
end
|
||||||
|
|
||||||
|
function obake:draw()
|
||||||
|
self.anim:draw(self.x - 16, self.y - 16)
|
||||||
|
end
|
||||||
|
|
||||||
|
function obake:on_collide(e1, e2, dx, dy)
|
||||||
|
|
||||||
|
end
|
Loading…
Reference in New Issue
Block a user