FlxObject

API Reference > flixel > FlxObject

FlxObject

FlxObjectは表示オブジェクト(FlxSpriteFlxTextなど)のほとんどの基底クラスです。 これは、ゲームのオブジェクト、基本的な状態情報、サイズ、スクロール、および基本的な物理学と運動に関するいくつかの基本的な属性が含まれています。



スーパークラス

FlxBasic


定数

SEPARATE_BIAS:Float = 4

この値は、2つのオブジェクトが衝突それらを分離しようとして停止する前に交差しなければならない最大ピクセル数を表します。 コリジョン抜けが発生していない限り、これを変更しないでください。

向き

facing / allowCollisions / touching で使用可能な、向きを表す定数です。

定数名説明
LEFT0x0001左向き。`facing`に代入して使用します。コリジョンやタッチ判定に使用します
RIGHT0x0010右向き。`facing`に代入して使用します。コリジョンやタッチ判定に使用します
UP0x0100上向き。`facing`に代入して使用します。コリジョンやタッチ判定に使用します
DOWN0x1000下向き。`facing`に代入して使用します。コリジョンやタッチ判定に使用します
NONE0x0000無効な向き。`facing`に代入して使用します。コリジョンやタッチ判定に使用します
CEILINGUP天井
FLOORDOWN下から登れる床
WALLLEFT-RIGHT左右のみ有効な壁
ANYLEFT-RIGHT-UP-DOWNどの方向からも通り抜けできない(どこからでも衝突を行う)。デフォルト値

staticメソッド

separate() : Flixelが用意している衝突処理を呼び出します

通常はFlxG.collide() / FlxG.overlap() を使います。
個別に衝突判定をする場合に使います
  • 引数
    • Object1:FlxObject : 衝突判定を行うオブジェクト
    • Object2:FlxObject : 衝突判定を行う他のオブジェクト
  • 戻り値:Bool : 衝突していたらtrue

フィールド

x:Float = 0 : X座標

y:Float = 0 : Y座標

width:Float : コリジョンの幅

height:Float : コリジョンの高さ

camera:FlxCamera

cameras:Array<FlxCamera>

pixelPerfectRender?:Bool = true

angle:Float = 0 : 回転角度

moves:Bool = true : 移動を可能にするかどうか

falseを設定すると速度と加速度、角速度の設定が反映されなくなります

immovable = false : trueを指定すると衝突しても動かなくなります

solid:Bool : オブジェクトの衝突を行うかどうか

falseを設定すると衝突判定が無効になります。中身は allowCollisions の値を NONE(無効) 変更しているだけです
trueに設定すると、allowCollisions が ANY(どの方向からも有効) となります

scrollFactor:FlxPoint : カメラの動きに対する動きの比率を指定します

通常は(1,1)でカメラがスクロールすると画面外に出て行ってしまいます。
例えば(0, 0)の場合はスクリーンの固定の位置となり動きません(背景など)。
ボタンなどのUIは(0,0)にしておくのがよいでしょう

velocity:FlxPoint : 移動速度を指定します。単位は1秒間に進むピクセル数です

acceleration:FlxPoint : 加速度を指定します。単位は1秒間に進むピクセル数です

drag:FlxPoint : 速度の減少量

maxVelocity:FlxPoint : 最大移動速度

last:FlxPoint : 1フレーム前の座標

mass:Float = 1 : 仮想的な質量を表します

弾力性`elastcity`と一緒に使用します。変更するとエフェクトなどでクレイジーな結果が出ますので、ご利用は計画的にお願いします

elastcity:Float = 0 : 弾力性を表す値です

衝突後の反応に影響が出ます。

angularVelocity:Float = 0 : 角速度を指定します

angularAcceleration:Float = 0 : 角加速度を指定します

angularDrag:Float = 0 : 角減速度をしています

maxAngular:Float = : 最大の角度を指定します 10000

health:Float = 1 : HP (ratio)

HPや装甲のパーセンテージなど何にでも使える値です
hurt関数を呼び出すと減少します

touching:Int = NONE : 現在触れている方向

wasTouching:Int = NONE : 1フレーム前の触れた方向

allowCollisions:Int = ANY : 衝突を許可する方向を指定します。

UP,DONW,LEFT,RIGHTなど。プラットフォームゲームでよくある下から登れる床の場合は「UP」を指定します。

collisonXDrag:Bool = true

debugBoundingBoxColor?:Null<Int> = null

ignoreDrawDebug?:Bool = false : デバッグ用のコリジョン描画の有効フラグ


メソッド

new() : コンストラクタ

  • 引数
    • X:Float = 0 : 初期座標(X)
    • Y:Float = 0 : 初期座標(Y)
    • Width:Float = 0 : コリジョンの幅
    • Height:Float = 0 : コリジョンの高さ
  • 戻り値:Void

getScreenXY() : スクリーン座標を取得する

  • 引数
    • ?point:FlxPoint : スクリーン座標(戻り値)
    • ?Camera:FlxCamera : カメラオブジェクト (指定がなければFlxG.cameraを使用する)
  • 戻り値

getMidpoint : 中心座標を取得する

  • 引数
    • ?point:FlxPoint : 中心座標(戻り値)
  • 戻り値

inWorldBounds? : ゲーム境界(FlxG.worldBounds)内かどうかチェックします

通常、領域外に出たらオブジェクトは消します
  • 戻り値
    • Bool : ゲーム領域(FlxG.worldBounds)の外にいるとtrue

reset() : オブジェクトをrevive() して指定の座標に設定します

  • 引数
    • X:Float : 座標(X)
    • Y:Float : 座標(Y)
  • 戻り値:Void

isOnScreen?() : 画面内に存在するかどうかをチェックします

  • 引数
    • ?Camera:FlxCamera : カメラオブジェクト(指定がなければFlxG.cameraを使用する)
  • 戻り値:Bool : 画面内に存在すればtrue

isTouching() : 指定の方向に接触しているかどうかをチェックします

特定の面に接しているかどうかを調べる便利関数。
super.update() を呼び出すと判定のための値がクリアされるので、
super.udpate() を呼び出す前にチェックを行います。
  • 引数
    • Direction:Int : 方向定数
  • 戻り値:Bool : 接触してれば true

使用例: 床に着地しているかどうかを調べる

  if(isTouching(FlxObject.FLOOR)) {
      // 地面に着地している
      if(FlxG.keys.justpressed.SPACE) {
        // SPACEキーでジャンプする
      }
  }

justTouched() : 指定の方向に触れたかどうか

特定の面に接しているかどうかを調べる便利関数。
super.update() を呼び出すと判定のための値がクリアされるので、
super.udpate() を呼び出す前にチェックを行います。

前フレームのチェック時に触れている場合はfalseとなります
  • 引数
    • Direction:Int : 方向定数
  • 戻り値:Bool : 触れたのならtrue

hurt() : ダメージを与えます

フィールドのhealth値を減らして、0以下になったらkill()します
  • 引数
    • Damage:Int : ダメージ量

setPosition() : 座標を設定します

  • 引数
    • X:Float = 0 : 座標(X)
    • Y:Float = 0 : 座標(Y)
  • 戻り値:Void

setSize() : コリジョンのサイズを設定します

  • 引数
    • Width:Float : コリジョンの幅
    • Height:Float : コリジョンの高さ
  • 戻り値:Void

overlapsPoint() : 指定の座標に重なっているかどうかを調べます

  • 引数
    • point:FlxPoint : 調べる座標
    • InScreenSpace?:Bool = false : スクリーン座標で判定を行うかどうか
    • ?Camera:FlxCamera : 判定を行うカメラ
  • 戻り値:Boolean : 重なっていれば true