AS3 лазерное оружие - PullRequest
       1

AS3 лазерное оружие

0 голосов
/ 22 апреля 2011

Я довольно новичок в сценарии действий 3 (я немного сделал в as2), и я пытаюсь создать лазерную пушку, которая вращается в направлении мыши и стреляет, когда мышь срабатывает.

видкак это, но в as3

http://www.freeactionscript.com/2009/04/laser-hitting-solid-objects-walls/

Спасибо, Тор

Ответы [ 3 ]

2 голосов
/ 23 апреля 2011

Вы можете начать играть с чем-то вроде этого:

//adding listener to run all the time
m.addEventListener("enterFrame", runGame);
//listener for mouse is down
stage.addEventListener("mouseDown", md);
//listener for mouse is up
stage.addEventListener("mouseUp", mu);

//to know if mouse is down
var _fire:Boolean = false;

//function for all the time
function runGame(evt:*):void
{
    //to know the angle where the mouse is from the "canon" in radians
    var angle:Number = Math.atan2(stage.mouseY - m.y, stage.mouseX - m.x);

    //set the canon's rotation
    m.rotation = 180 * angle / Math.PI;

    //if mouse us down -> fire
    if(_fire)
    {
        //create a point far away, so it will always work if the screen is normal
        var point:Point = Point.polar(10000, angle);

        //shoot the laser
        graphics.lineTo(point.x, point.y);
    }
}

//when mouse is down
function md(evt:*):void
{
    //prepare graphics
    graphics.clear();
    graphics.lineStyle(2, 0xff0000);
    graphics.moveTo(m.x, m.y);

    //set fire to true
    _fire = true;
}

//when mouse is up
function mu(evt:*):void
{
    //set fire to false
    _fire = false;

    //clear the laser
    graphics.clear();
}

Создайте новый проект, поместите видеоклип на сцену, назовите его «m» (без кавычек;)). Вставьте сценарий, где сценарий действия находится в кадре 1.

Если вы хотите, чтобы лазер следил за мышью, когда он выключен, измените

RunGame функция к этому:

function runGame(evt:*):void
{
    //to know the angle where the mouse is from the "canon" in radians
    var angle:Number = Math.atan2(stage.mouseY - m.y, stage.mouseX - m.x);

    //set the canon's rotation
    m.rotation = 180 * angle / Math.PI;

    //if mouse us down -> fire
    if(_fire)
    {
        //create a point far away, so it will always work if the screen is normal
        var point:Point = Point.polar(10000, angle);

        //shoot the laser
        graphics.clear();
        graphics.lineStyle(2, 0xff0000);
        graphics.moveTo(m.x, m.y);
        graphics.lineTo(point.x, point.y);
    }
}

и функция md для этого:

//when mouse is down
function md(evt:*):void
{
    //set fire to true
    _fire = true;
}
0 голосов
/ 23 апреля 2011

Вероятно, лучше всего изучить основные понятия программирования, прежде чем пытаться заняться такими вещами.Вырезание / вставка кода не является программированием, и может иметь результаты по Франкенштейну.

Нет волшебного ярлыка для программирования, вам нужно изучить основные концепции и опираться на них.Wonderfl.net - отличное место, чтобы попробовать, но я бы предложил начать с более простых концепций.Пока вы этого не сделаете, все это будет казаться вам вуду.

0 голосов
/ 22 апреля 2011

"Эпический" лазер , с источником. Также отличный сайт кстати.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...