Статьи

Быстрый совет: имитируйте движение Бу от Super Mario Bros.

В этом кратком совете вы узнаете технику условного движения противника, основанную на классическом враге из классной игры. Лицо призрака, и он замерзает; отвернитесь и он придет за вами.


Давайте посмотрим на конечный результат, к которому мы будем стремиться:

Используйте левую и правую клавиши со стрелками для перемещения. Ходьба была упрощена ради этого Quick Tip.


Игрок и враг будут размещены на экране, игрок будет управляться с помощью клавиш со стрелками влево и вправо, а противник будет реагировать на положение и ориентацию игрока.


Запустите Flash и создайте новый Flash-документ, установите размер сцены 320x200px и частоту кадров 24fps.


Это интерфейс, который мы будем использовать, простые формы и цвета, чтобы воссоздать это поведение.

Преобразуйте персонажей в видеоклипы и назовите их призраком и игроком .


Создайте новый класс ActionScript (Cmd + N), сохраните файл как Main.as и напишите следующие строки, пожалуйста, прочитайте комментарии в коде, чтобы полностью понять поведение класса.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
package
{
    import flash.display.Sprite;
    import flash.events.KeyboardEvent;
    import flash.events.Event;
 
    public final class Main extends Sprite
    {
 
        public final function Main():void
        {
            addListeners();
        }
         
        private final function addListeners():void
        {
            stage.addEventListener(KeyboardEvent.KEY_DOWN, movePlayer);
            stage.addEventListener(Event.ENTER_FRAME, follow);
        }
         
        private final function movePlayer(e:KeyboardEvent):void
        {
            if(e.keyCode == 37) //move left if left arrow key is pressed
            {
                player.x -= 4;
                player.rotationY = 180;
            }
            else if(e.keyCode == 39) //move right if right arrow key is pressed
            {
                player.x += 4;
                player.rotationY = 0;
            }
        }
         
        private final function follow(e:Event):void
        {
            /* Right side */
             
            if(player.rotationY == 0 && player.x > ghost.x)
            {
                ghost.x += 0.4;
                ghost.y += 0.4;
                ghost.alpha = 1;
                ghost.rotationY = 0;
            }
            else if(player.rotationY == 180 && player.x > ghost.x) //if the player looks at the ghost
            {
                ghost.alpha = 0.5;
            }
             
            /* Left side */
             
            if(player.rotationY == 180 && player.x < ghost.x)
            {
                ghost.x -= 0.4;
                ghost.y += 0.4;
                ghost.alpha = 1;
                ghost.rotationY = 180;
            }
            else if(player.rotationY == 0 && player.x < ghost.x) //if the player looks at the ghost
            {
                ghost.alpha = 0.5;
            }
             
            /* Stop Y if ghost is near floor */
             
            if(ghost.y >= 165)
            {
                ghost.y = 165;
            }
        }
    }
}

Добавьте имя класса в поле « Класс» в разделе « Публикация » на панели « Свойства», чтобы связать FLA с классом основного документа .


Вы освоили простую и полезную технику передвижения противника, попробуйте ее в своих собственных играх!

Надеюсь, вам понравился этот урок, спасибо за чтение!