Tài nguyên Game Maker

 // obj_enemy step


// kiểm tra có trúng đạn hay không

if place_meeting(x,y,obj_bullet){

step = 0

state = 4

}


switch (state){

// 0: đứng im

case 0:

sprite_index = spr_ene1_idle


// khoảng cách đến người chơi có bé hơn 500 không?

if distance_to_object(obj_player) <= 500 {

step = 0

state = 2

}

else{

// nếu khoảng cách lớn hơn 500 thì tang thời gian, 

//nếu 120 khung hình thì sẽ qua trạng thái lang thang

step ++

if step == 120{

hspeed = choose(5,-5)

step = 0

state = 1

}

}

break

// 1: Lang thang

case 1:

if distance_to_object(obj_player) <= 500 {

step = 0

state = 2

}

else{

// nếu khoảng cách lớn hơn 500 thì tang thời gian, 

//nếu 120 khung hình thì sẽ qua trạng thái lang thang

step ++

if step == 120{

hspeed = 0

step = 0

state = 0

}

}

// animation

sprite_index = spr_ene1_walk

// quay trai phai

if hspeed > 0 image_xscale = 1

if hspeed < 0 image_xscale = -1

break

// 2: truy đuổi

case 2:

// tìm hướng đến người chơi

var _dir = point_direction(x,y,obj_player.x,obj_player.y)

// nếu 90> dir > 270 thì hướng sang trái, không thì hướng sang phải

if _dir > 90 and _dir < 270 {

hspeed = -20

}

else{

hspeed = 20

}

// nếu khoảng cách bé hơn 200 thì sang trạng thái tấn công

if distance_to_object(obj_player) <= 200 {

// trước khi sang trạng thái tấn công, đặt khung hình hiện tại là 0

image_index = 0

state = 3

}

// sau 3 giây truy đuổi tự động về trạng thái đứng yên

step = step + 1

if step == 180 {

step = 0

state = 0

}

// animation

sprite_index = spr_ene1_walk

// quay trai phai

if hspeed > 0 image_xscale = 1

if hspeed < 0 image_xscale = -1

break

// 3: tấn công

case 3:

sprite_index = spr_ene1_atk

hspeed = 0

// Khi hình ảnh sprite là hình cuối thì bắn ra viên đạn hướng tới người chơi, 

// sau đó về lại trạng thái đứng yên (0)

if image_index == sprite_get_number(sprite_index) - 1 {

// tạo đạn và lập trình sự kiện create của đạn qua từ khóa with

var _bul = instance_create_layer(x,y,"Instances",obj_enebullet)

with (_bul){

sprite_index = spr_ene1_bullet

speed = 30

direction = point_direction(x,y,obj_player.x,obj_player.y)

}

state = 0

}

break

// 4: chết

case 4:

sprite_index = spr_enemy_dead

hspeed = 0

vspeed = 0

step = step + 1

var _bullet = instance_place(x,y,obj_bullet)

instance_destroy(_bullet) //xóa đạn

if step == 120 {

instance_destroy() // xóa kẻ thù

}

break

}



movement()

Đăng nhận xét

Mới hơn Cũ hơn