3d
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
package main
|
||||
import rl "vendor:raylib"
|
||||
|
||||
Enemy :: struct {
|
||||
using actor: Actor,
|
||||
touch_dmg: i32,
|
||||
}
|
||||
|
||||
make_enemy :: proc(pos: rl.Vector2) -> Entity {
|
||||
return Entity {
|
||||
v = Enemy {
|
||||
actor = Actor {
|
||||
base = BaseEntity {
|
||||
pos = pos,
|
||||
col_size = 16,
|
||||
gfx = {0 = GfxCircle{pos = {}, radius = 11, color = {220, 70, 70, 255}}},
|
||||
},
|
||||
hp = 40,
|
||||
max_hp = 40,
|
||||
speed = 55,
|
||||
},
|
||||
touch_dmg = 10,
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
enemy_update :: proc(state: ^GameState, e: ^Enemy, h: Handle, dt: f32) {
|
||||
pe := get_entity(state, state.player)
|
||||
if pe != nil {
|
||||
dir := get_base(pe).pos - e.pos
|
||||
e.vel = rl.Vector2Normalize(dir) * e.speed
|
||||
}
|
||||
|
||||
if e.hp <= 0 && !e.marked {
|
||||
e.marked = true
|
||||
spawn(state, make_ground_item(e.pos))
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user