программирование персонажа, чтобы стрелять - PullRequest
0 голосов
/ 24 августа 2011

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

это мой код:

import flash.events.*;
var xd:Number;
var yd:Number;
var radAngle:Number;
var size:int=25;
// size of the arrowshot
var arrowshotSpeed:int=50;
// defines some variables


function mcFunction(event:Event):void {

    xd=bowframe.bow.x-stage.mouseX;
    yd=bowframe.bow.y-stage.mouseY;
    // finds the x and y difference of the sprite and the mouse
    radAngle=Math.atan2(yd,xd);
    // finds the angle in radians 
    bowframe.bow.rotation = int(radAngle*360/(Math.PI*2)-90);

}

stage.addEventListener(Event.ENTER_FRAME, mcFunction);

function shootarrowshot(event:MouseEvent):void {
    var arrowshot:Sprite = new Sprite();
    with (arrowshot.graphics) {
        lineStyle(1, 0x000000, 1);
        moveTo(-size/2,-size);
        lineTo(size/2,-size);
        lineTo(size/2,size);
        lineTo(-size/2,size);
        lineTo(-size/2,-size);
    }
    addChild(arrowshot);
    //attaches
    arrowshot.x=bowframe.bow.x;
    arrowshot.y=bowframe.bow.y;
    arrowshot.rotation=bowframe.bow.rotation;
    // sets the arrowshot x,y, and rotation to the bowframe.bow
    arrowshot.addEventListener(Event.ENTER_FRAME, movearrowshot);
    // adds and enterFrame to the arrowshot, to move it
}
function movearrowshot(event:Event) {
    with (event.target) {
        // with the object that called the event
        x+= arrowshotSpeed*Math.sin(rotation*(Math.PI/180));
        y-= arrowshotSpeed*Math.cos(rotation*(Math.PI/180));
        // moves the arrowshot depending on its rotation, uses build in math sin and cos functions
        if (x>=550||x<=0||y>=400||y<=0) {
            // if the arrowshot is out of the screen
            event.target.removeEventListener(Event.ENTER_FRAME, movearrowshot);
            this.removeChild(DisplayObject(event.target));
            // removes the arrowshot sprite and the enterFrame on it
        }
    }
}
stage.addEventListener(MouseEvent.MOUSE_DOWN, shootarrowshot);

Я также хочу, чтобы стрелка и лук оставались лицом к мыши.

1 Ответ

0 голосов
/ 25 августа 2011

Во-первых, то, как вы делаете это, кажется мне задом наперед, но эй, если это сработает, продолжайте в том же духе!Человек разработал простой снайперский шутер.Если вам нужны лук и стрелы, основные изменения, которые вам нужно будет сделать, касаются вращения, основанного на дуге, вызванной гравитацией.(если вы не собираетесь использовать расчет гравитации).Похоже, что вы все сделаете, найдя расчет.

В вашем комментарии я не уверен, что вы имели в виду под «он также создает маркер для всех остальных фреймов»

Надеюсь, вы научитесь работать с этим руководством

...