Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   вопрос по движку или типа того (http://www.flasher.ru/forum/showthread.php?t=145304)

dj100500 04.10.2010 16:05

вопрос по движку или типа того
 
вот код
отвечает за движение и чтоб при контакте с граунд он как в стенку и в этом направлении не двигался но вот жму налево въезжаю в стенку всё ок в эту сторону не движется но если быстро нажать вправо то движется налево через стенуку:eek::wacko:
Код AS3:

function movoHero(e:Event):void
{
    if (left && !hero.hitTestObject(ground))
    {
        hero.x -= speed;
    }else if(hero.hitTestObject(ground) && left)
    {
        hero.x += speed + 1;
    }
    if (up && !hero.hitTestObject(ground) )
    {
        hero.y -= speed;
    }
    else if(hero.hitTestObject(ground) && up)
    {
        hero.y += speed +1;
    }
    if (right && !hero.hitTestObject(ground) )
    {
        hero.x += speed;
    }
    else if(hero.hitTestObject(ground) && right)
    {
        hero.x -= speed + 1;
    }
    if (down && !hero.hitTestObject(ground))
    {
        hero.y += speed;
    }
    else if(hero.hitTestObject(ground) && down)
    {
        hero.y -= speed;
    }
 
}

знаю код тупой можно и лучше чонить придумать ну вот заодно и посоветуйте чонить поумнее:rolleyes:

Добавлено через 2 минуты
и исчо почему исли я из библиотеки копирую на сцену много граундов testhit не работает(

Hidest 04.10.2010 16:28

Вас таки совершенно невозможно читать! :(

dj100500 04.10.2010 16:32

ок
смотри вот у мя стенка groung и движущееся тело hero цель чтоб hero упирался в groung как в стенку. ну вот жму в лево упираюсь в стенку но если быстро нажть право то поеду в лево через стенку

Добавлено через 30 секунд
как убрать этот эфект

incvizitor 04.10.2010 16:49

Вы киньте может полностью код? Откуда кому знать как у Вас там переменные меняються?

И загляните на сайт: http://www.gramota.ru/

mickfallout 04.10.2010 17:28

Цитата:

Сообщение от dj100500 (Сообщение 940703)
ок
смотри вот у мя стенка groung и движущееся тело hero цель чтоб hero упирался в groung как в стенку. ну вот жму в лево упираюсь в стенку но если быстро нажть право то поеду в лево через стенку

Добавлено через 30 секунд
как убрать этот эфект

имеется в виду что-то типа этого?
Код AS3:

package 
{
        import flash.display.Sprite;
        import flash.events.Event;
        import flash.events.KeyboardEvent;
 
        public class Main extends Sprite
        {
                private var ground:Sprite = new Sprite();
                private var hero:Sprite = new Sprite();
                public function Main():void
                {
                        ground.graphics.beginFill(0x00FF00);
                        hero.graphics.beginFill(0xFF0000);
                        ground.graphics.drawRect(0, 0, 100, 100);
                        hero.graphics.drawRect(0, 0, 10,10);
                        ground.graphics.endFill();
                        hero.graphics.endFill();
                        addChild(ground);
                        addChild(hero);
                        hero.x = 111;
                        stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler);
                }
                private function keyDownHandler(event:KeyboardEvent):void
                {
                        switch (event.keyCode) {
                          case 38: {
                                trace("up");
                                hero.y--;
                                if (hero.hitTestObject(ground))
                                        hero.y++;
                                break;
                          }
                          case 39: {
                                trace("right");
                                hero.x++;
                                if (hero.hitTestObject(ground))
                                        hero.x--;
                                break;
                          }
                          case 40: {
                                trace("down");
                                hero.y++;
                                if (hero.hitTestObject(ground))
                                        hero.y--;
                                break;
                          }
                          case 37: {
                                trace("left");
                                hero.x--;
                                if (hero.hitTestObject(ground))
                                        hero.x++;
                                break;
                          }
                        }
                }
        }
 
}

или герой обладает инерцией? тогда наверное баг в том что он "влипает" в стенку, и уже внутри стенки движется непойми как. если так то нужно перед тем как останавливать героя "вынуть" его из стенки.

dj100500 04.10.2010 20:46

вот мой фла короч проще его выложить
vk0ntkte.h1.ru/h1.rar

udaaff 04.10.2010 21:30

1. Название темы не раскрывает сути вопроса.
2. Игнорирование знаков препинания.


Часовой пояс GMT +4, время: 06:56.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.