игрок двигает ящики и запихивает их в ямы
Итак, мы хотим чтобы игрок двигал ящики. Для этого создадим спрайты: s_player - спрайт игрока
s_block - спрайт ящика
теперь создаём объекты:
obj_player - объект игрока
obj_block - объект ящика
объект ящика обязательно должен быть твёрдым. для этого в свойствах объекта obj_block поставьте галочку "твёрдый".
теперь в свойствах объекта игрока, в событии Create пишем код:
S=4//установка скорости. скорость - S=4
Move[1,0]=true
Move[1,1]=true
Move[1,2]=true
Move[1,3]=true
а в событии Step этого же объекта пишем:
speed=0
if keyboard_check(vk_left) && Move[1,0]=true{
motion_set(180,S)//шагать налево со скоростью S
}
if keyboard_check(vk_right) && Move[1,1]=true{
motion_set(0,S)//шагать направо со скоростью S
}
if keyboard_check(vk_down) && Move[1,2]=true{
motion_set(270,S)//шагать вниз со скоростью S
}
if keyboard_check(vk_up) && Move[1,3]=true{
motion_set(90,S)//шагать наверх со скоростью S
}
if instance_place(x-64,y,obj_block) && instance_place(x-1,y,obj_block)
{
Move[1,0]=false
}
else
Move[1,0]=true
if instance_place(x+64,y,obj_block) && instance_place(x+1,y,obj_block)
{
Move[1,1]=false
}
else
Move[1,1]=true
if instance_place(x,y+64,obj_block) && instance_place(x,y+1,obj_block)
{
Move[1,2]=false
}
else
Move[1,2]=true
if instance_place(x,y-64,obj_block) && instance_place(x,y-1,obj_block)
{
Move[1,3]=false
}
else
Move[1,3]=true
Отлично. Теперь открываем свойства объекта obj_block - свойства ящика. В событии Сreate пишем:
S=4
А в событии Step:
speed=0
Теперь создаём событие столкновение с объектом игрока (obj_player) и пишем там код:
motion_set(obj_player.direction,S)
Вот. Теперь игрок может двигать камни. Но нам ещё нужна яма! Создаём объекты
obj_hole - объект ямы
obj_block_and_hole - объект накрытой ящиком ямы
и соответственно спрайты для них.
Теперь открываем свойства ямы. В событии столкновения с obj_block пишем код:
instance_destroy();
instance_create(x+0,y+0,obj_block_and_hole);
Отлично! Почти готово. Открываем свойства obj_block , и в событии столкновения с ямой пишем маленький код:
instance_destroy();
готово! теперь можно протестировать. всё работает!