actionscript-3 - كتاب - actionscript ماهو



أكتيونسكريبت 3، كيفية الحصول على حرف للقفز لفترة أطول (1)

استخدامك ل 9.8 للجاذبية هو متر في الثانية الواحدة في الثانية. منذ يتم تنفيذ قطرة () كل إطار، وأنت تسير للحصول على بعض الجاذبية السريعة إلى الأمام، إلا إذا كان البرنامج يقوم به فقط 1 فبس. لذلك، على افتراض تريد المزيد من السيولة من 1 فبس، والنظر في القيام به

    jumpVar += gravity/fps;


ومع ذلك، للحصول على سرعة دقيقة المطلوبة لرفع لك إلى ارتفاع، وأعتقد أن الحساب هو ...

    initialVelocityInMetersPerSecond = Math.sqrt( 2 * gravity * metersToJump )

لذلك بدلا من جومبفار = -70، سوف تفعل شيئا مثل ...

    // get posititive distance since we'll use to get a square root
    var metersToJump:Number = Player.y - platform.y;
    jumpVar = -Math.sqrt( 2 * gravity * metersToJump );

... ثم في معالج ENTER_FRAME ...

    Player.y += jumpVar / fps;
    jumpVar += gravity / fps;

من المثال الخاص بك انها ليست القضية، ولكن إذا قمت بوضع منصة تحت لاعب، فإنه لن يعمل كما لا يمكنك الحصول على جذر عدد سلبي!

في بلدي رمز المثال أنا لا تحديد ارتفاع المنصة، فكيف تقرر على النظام الأساسي الهدف هو مسألة منفصلة تماما.

أنا جعل لعبة منهاج في فلاش (AS3) ورمز لدي أدناه يعمل. أريد شخصيتي للقفز عالية بما فيه الكفاية للسماح لها الوقت للوصول إلى منصة. المشكلة الوحيدة مع التعليمات البرمجية أدناه هي السرعة التي يقفز صعودا وهبوطا وارتفاع القفزة. شريط الفضاء هو ما يؤدي وظيفة لتشغيل.

الرجاء المساعدة كما أود أن نقدر ذلك كثيرا! :)

Player.addEventListener(Event.ENTER_FRAME, fl_MoveInDirectionOfKey);
stage.addEventListener(KeyboardEvent.KEY_DOWN, fl_SetKeyPressed);
stage.addEventListener(KeyboardEvent.KEY_UP, fl_UnsetKeyPressed);

function fl_MoveInDirectionOfKey(event:Event)
{
    if (spacePressed){
        var gravity:Number = 9.8;
        var jumping:Boolean = false;
        var jumpVar:Number = 0;

        if(jumping != true)
        {
            jumpVar = -70;
            jumping = true;
        }

        if(jumping)
        {
            spacePressed = false;
            Player.y += jumpVar;
            jumpVar += gravity;
        }
        Player.addEventListener(Event.ENTER_FRAME, drop);
        function drop(event:Event)
        {
            Player.y -= jumpVar;
            jumpVar -= gravity;
            if(Player.y > 350){
                Player.y = 350;
            }
        }
        Player.removeEventListener(Event.ENTER_FRAME, fl_MoveInDirectionOfKey);
        Player.addEventListener(Event.ENTER_FRAME, fl_MoveInDirectionOfKey);

        /*var frameNumb:Number = 0;

        Player.addEventListener(Event.ENTER_FRAME, jumpup);
        spacePressed = false;
        function jumpup(event:Event)
        {
            while(frameNumb < 30){
                spacePressed = false;
                Player.y -= 1;
                frameNumb += 0.5;
            }
            Player.removeEventListener(Event.ENTER_FRAME, jumpup);
            Player.addEventListener(Event.ENTER_FRAME, jumpdown);
            function jumpdown(){
                while(frameNumb > 0){
                    spacePressed = false;
                    Player.y += 1;
                    frameNumb -= 0.5;
                }
            }
        }*/
    }
    if (leftPressed)
    {
        Player.x -= speed;
        Player.gotoAndStop("left");
    }
    if (rightPressed)
    {
        Player.x += speed;
        Player.gotoAndStop("right");
    }
}

شكر