オブジェクトは二つ必要で、落下する方のオブジェクトにだけ動作定義します。
Create と Step の各イベントから対応した関数を呼び出してください。

地面として配置するオブジェクトはイベントの定義は一切いらないけれど、Object の Properties から「Solid」にだけチェックを入れてください。衝突判定に必要な設定。あとオブジェクトのリソース名は「wall」。

動作デモ:● simplePhysics_Freefall

Create イベント用(必要な初期化処理、インスタンス変数の宣言)

///Init_SimplePhy_FreeFall(val);
/*
Init_SimplePhy_FreeFall(0.5);
*/
InitGrav = argument0; // Set Default Gravity
gravity  = InitGrav;
//solid = !solid; // if "solid" is false it is changed to true

Step イベント用(重力処理と 1 pixel 単位の衝突判定

///Step_SimplePhy_CheckCollide();
/*
  "Check Collide With Solids"
Step_SimplePhy_CheckCollide();
*/
    if (vspeed > 0 and !place_free(x, y+vspeed))
    {
        for (var i=0; i<vspeed; i++)
        {
         var cy = y + i + 1;
            if place_free(x, cy) 
            {
            gravity = InitGrav;
            }
            else 
            {
            gravity = 0;
            vspeed  = 0;
            y       = cy - 1; 
            break;
            };
        };
    };

Step イベント用(ジャンプ

///Step_SimplePhy_Jump(key, vspeed_value);
/*
Step_SimplePhy_Jump(vk_space, 10);
*/
    if keyboard_check(argument0) or gamepad_button_check(0, gp_face1)
    {
        if place_meeting(x, y+1, wall) // all <<-->> "wall" 
        {
        vspeed  = -argument1;
        gravity = InitGrav;
        }
    };

ライブラリ一覧へ戻る

Leave a Reply

Your email address will not be published. Required fields are marked *

WordPress › Error

There has been a critical error on this website.

Learn more about troubleshooting WordPress.