な、何でこんなににぎわってるんだすごくうれしいぞ!どんなレスでもにぎわってるほうがいいなやはり。

>>683
基本的には>>688のとおり。スキンメッシュやアニメーションメッシュなんかも原理的にはこれ。

class NestableUnit{
public NestableUnit Parent;
public List<NestableUnit> Children;
public PosVelocityAccele GrobalMoveState;

protected PosVelocityAccele localMoveState;
public abstract void Move(object arg);
public abstract void Draw(Vector3 addPosition); //大きい敵撃破時の振動エフェクト処理など、衝突判定その他には関係ないが描画位置を動かしたい場合にここから渡す。
・・・
}
class UnitA : NestableUnit{
public override void Move(object arg){
foreach(a this.Children){
a.Move(this);
}
}
}

グローバル座標は、直親のグローバル座標と子のローカル座標から算出。
判定処理はもちろんグローバル座標で処理する。

・・・ただ、実際のところほとんどの敵キャラは座標の階層化しないから、うちはNestableUnitの親にCustomUnitがいて、ほとんどの表示物はそいつの派生になってる。
Unit(汎用クラス。ほぼインタフェース状態。)
-CustomUnit(自分のゲームシステム用にメンバの追加や基本処理でoverrideを行ったもの。自分は最近接キャラに対する追尾弾などを処理するのを楽するため、StageはList<CustomUnit>をもち、CustomUnitはStageを持つ。)
--CustomNestableUnit(触手系用にメンバを増やしたもの。)
--Custom3DUnit(Unitはスクリーン座標管理なので、3Dグラフィックのキャラをスクリーン座標で管理できるようにしたもの。)