Форум 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=181436)

poliglot 23.06.2012 00:39

Столкновения
 
Вложений: 1
Я делаю небольшую игру стрелялку. Возник вопрос по столкновениям.

Как их можно усовершенствовать? У меня получается, что ГГ "липнет боками" к тайлам к которым подходит и начинает медленно подниматься. И вообще постоянно "скачет".

Код AS3:

/Переменная all_obj находиться в object_base и имеет модификатор protected.
package main {
        import flash.events.Event;
        import flash.display.MovieClip;
 
        public class Dynamic_object extends Object_base {
                private var finder:Block = new Block(0);
                private static var gravity:Number = 0.8;
                private static var airFrict:Number = 0.9;
                protected var flying:Boolean = false;
 
                protected var speedY:Number = 0;
                protected var speedX:Number = 0;
                private var bX, bY;
 
                public function Dynamic_object() {
                        // constructor code
                }
 
                public function move():void {
 
                }
 
                protected function secondMove():void {
                        //bX = x; bY = y;
                        speedY  += gravity*airFrict;
                        speedX *= airFrict;
                        y += speedY;
                        x += speedX;
                        collision();
                        //trace(flying);
                }
 
                private function collision():void {
                        for each (var obj:Object_base in all_obj) {
                                if (hitTestObject(obj) && obj != this) {
                                        flying = true;
                                        y -= speedY;
                                        speedY = 0;
                                        if (String(obj) == String(finder) && (obj as Block).getID() == 3) {
                                                trace((obj as Block).getID());
                                                speedX += 2;
                                        } else if (String(obj) == String(finder) && (obj as Block).getID() == 4) {
                                                speedX *= 0.2;
                                        }
                                        //y = bY;
                                } else if (!hitTestObject(obj)) {
                                        flying = true;
                                }
                                if (hitTestObject(obj) && obj != this) {
                                        x -= speedX;
                                        speedX = 0;
                                        if (String(obj) == String(finder) && (obj as Block).getID() == 4) {
                                                speedY += 1.2;
                                        }
                                        //x = bX;
                                }
                        }
                }
 
        }
 
}


Hauts 23.06.2012 06:35

Цитата:

Error #2044: Необработанный IOErrorEvent:. text=Error #2035: URL-адрес не обнаружен.
У вас, как я понял, плиточный мир, верно?

mooncar 23.06.2012 10:43

Название темы не раскрывает сути вопроса.


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

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