Вращение не обязательно противоположный угол, почти отражающий? - PullRequest
0 голосов
/ 13 марта 2011

Итак, я получил этот класс bulletContainer, который стреляет во все эти пули, он работает и стреляет отлично, когда я помещаю класс в подвижную заставку, чтобы добавить на сцену.У меня не может быть этого в мувиклипе, потому что, когда я вызываю функцию bulletClass, она выдаст мне ошибку, говоря, что она существует.Теперь моя проблема в том, что когда я добавлюChild (bulletClass) на сцену, он будет работать точно так, как запрограммировано, за исключением движения / анимации.Пуля движется хорошо, за исключением того, что когда я стреляю, она стреляет в противоположную сторону, и не ПРОСТО стреляет в противоположную сторону, она стреляет немного влево (если я указываю прямо вверх немного влево), то, если я укажу полностью вправо, это будетвращаться, чтобы стрелять прямо со мной.Так что это в основном bass-akwards. Во всех отношениях, как я сказал, и это только когда я добавляюChild () с классом (который расширяет Movieclip).Я не знаю, почему я даю вам свой код, потому что он еще больше запутает вас, когда все проверит;Я думаю, что где-то есть преобразование, например, классы, которые расширяют Movieclip, ориентированы иначе, чем библиотека MovieClips?

Этот код находится в функции bulletAdder (), единственное место, где пули создаются в bulletContainer

var localPlayer = Object(root).localSurvivor;

//Select what movieclip should go into the bullet
var newBullet;
    newBullet = new bullet1;

//Create a local movieclip for this
var newBulletMC:MovieClip = new MovieClip;
    newBulletMC.addChild(newBullet);
    newBulletMC.x = setX;
    newBulletMC.y = setY;
    //trace(localPlayer.rotation);

//Create the newBullet class for movement
var localPlayerRotation = Object(root).localSurvivor.rotation;
trace(localPlayerRotation);
var newBulletClass:bulletClass = new bulletClass(localPlayerRotation, bulletLifetime);

//Add bulletMC to the bulletClass
    newBulletClass.addChild(newBulletMC);

//Add to array
    bulletArray.push(newBulletClass);

//Add to stage
    localStage.addChild(newBulletClass);

Это bulletClass, пули, которые движутся на экране

package  com{
        import flash.display.*
        import flash.utils.*

    public class bulletClass extends MovieClip{
            public var lifetime = 0;
            public var dir = 0;
                    var animationInt;
        public function bulletClass(playerRotation, bLifetime:Number = 1){
            dir = playerRotation
            //Start life
            animationInt = setInterval(animateBullet, 40);

        }

        private function animateBullet(){
            this.x += 10 * Math.sin(dir * (Math.PI / 180));
            this.y += 10 * Math.cos(dir * (Math.PI / 180));
        }

    }

}

1 Ответ

1 голос
/ 13 марта 2011

Похоже, у вас все отсортировано?

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

Если вы создаете игру, я настоятельно рекомендую хотя бы проверить одну или две из крупных флеш-фреймворков. Они делают много оптимизаций для вас за кулисами, и даже большая часть игровой логики становится абстрагированной для вас. Взгляните, например, на Flixel - очень легко быстро приступить к работе и множество учебников.

Только мои два цента, надеюсь, это поможет!

...