メインコンテンツまでスキップ

Draggable & タッチオブジェクト

AchEngineは2Dワールドオブジェクトのドラッグおよびタッチ処理のために3つのコンポーネントを提供します。

Draggable

MonoBehaviourDraggableコンポーネントを付けると、マウス/タッチでドラッグできるようになります。 Physics2DRaycasterがない場合はメインカメラに自動的に追加されます。

using AchEngine.UI;

public class CardView : Draggable
{
protected override void Start()
{
base.Start(); // Physics2DRaycasterを自動追加

OnTouchDown += () => Debug.Log("カードを掴んだ");
OnTouching += pos => Debug.Log($"ドラッグ中: {pos}");
OnTouchUp += hits => Debug.Log($"ドロップ、衝突体: {hits.Length}個");
}
}

イベント

イベントシグネチャ説明
OnTouchDownActionポインター押下直後
OnTouchingAction<Vector3>ドラッグ中 (ワールド座標)
OnTouchUpAction<Collider2D[]>ドロップ時、重なったCollider2Dリストを渡す

プロパティ

プロパティ説明
originalPosドラッグ開始時点のワールド座標 (protected)

TouchableObject

タップ/クリックのみを処理するオブジェクトに使用します。OnTouched()をオーバーライドしてください。

using AchEngine.UI;

public class EnemyObject : TouchableObject
{
protected override void OnTouched()
{
Debug.Log("敵をクリックした");
}
}

TouchableObjectObjectTouchManagerによって検出されます。シーンにObjectTouchManagerが存在している必要があります。

ObjectTouchManager

シーンに1つだけ存在するシングルトンマネージャーです。毎フレームマウス左ボタンクリックを検出し、 2DレイキャストでTouchableObjectを見つけてOnTouched()を呼び出します。

// シーンに空のGameObjectを作成しObjectTouchManagerコンポーネントを追加してください。
// 追加設定なしで自動的に動作します。

ObjectTouchManagerMonoSingleton<ObjectTouchManager>を継承するため、 シーン内に重複インスタンスがあると自動的に削除されます。