Class: TonCharacter

TonCharacter は、2DアクションゲームやRPGにおける「キャラクター(エージェント)」を統合管理するための高レベルAPIクラスです。

このクラスを使用することで、個々のキャラクターの座標管理、物理演算(重力・摩擦)、状態遷移(待機・歩行・ジャンプ)、そしてアニメーション描画を極めて少ないコードで実装できます。

つまり、会話シーンでちびキャラを動かすのに便利なクラスです!

ユーザーが行うのはアニメーションの設定と、移動やアクションのコマンドの入力だけです!!

主な機能:

Methods

void AddCharacter(string id, int x, int y, float gravity = 1800.0f)

キャラクターを追加します。

void RemoveCharacter(string id)

キャラクターを削除します。nullを指定すると全削除します。

void AddAnim(string id, CharacterAnimType type, string imageName, int x1, int y1, int w, int h, int frameCount, int duration, bool isLoop = true)

キャラクターにアニメーションパターンを登録します。

void SetPhysics(string id, bool useGravity, bool checkGround, float friction)

物理挙動パラメータを設定します。

void MoveTo(string id, int targetX, float speed)

指定X座標へ移動させます。

void PlayAction(string id, CharacterAnimType type)

登録済みのアニメーションを再生します。終了後はIdleに戻ります。

void Stop(string id)

移動やアクションを強制停止し、Idle状態に戻します。

void SetClipping(string id, bool enable, int minX, int maxX)

移動範囲制限(クリッピング)を設定します。範囲外に出ると反転します。

void Jump(string id, float vx, float vy)

キャラクターに速度を直接与えてジャンプさせます。

bool IsMoving(string id)

自動移動中(MoveTo)かどうかを返します。

bool IsOnGround(string id)

接地しているかどうかを返します。

Vector2 GetPos(string id)

キャラクターの現在座標を取得します。

Sample Code

// In Initialize()
// 1. Add Character "player" at (100, 300)
Ton.character.AddCharacter("player", 100, 300);

// 2. Register Animations
Ton.character.AddAnim("player", CharacterAnimType.Idle, "player_sheet", 0, 0, 32, 32, 4, 200);
Ton.character.AddAnim("player", CharacterAnimType.Walk, "player_sheet", 0, 32, 32, 32, 4, 100);
Ton.character.AddAnim("player", CharacterAnimType.Jump, "player_sheet", 0, 64, 32, 32, 4, 100);
Ton.character.AddAnim("player", CharacterAnimType.Surprise, "player_sheet", 0, 96, 32, 32, 4, 100, false);

// 3. Set Physics
Ton.character.SetPhysics("player", true, true, 5.0f);


// In Update()
// 4. Control (Example: Move when key is pressed)
if (Ton.Input.IsKeyDown(Keys.Right))
{
    // Move to X=500 with speed 240.0 (px/sec)
    Ton.character.MoveTo("player", 500, 240.0f);
}

// Perform One-shot Action
if (Ton.Input.IsTrigger(Keys.Z))
{
    Ton.character.PlayAction("player", CharacterAnimType.Surprise);
}

// Patrol (Round Trip) - usually called once, maybe in Initialize or event
// Ton.character.RoundTrip("enemy1", 100, 120.0f);