AStar.Traveler
説明
A*移動者に関連するデータおよびメソッドが利用可能になります。
プロパティ
isActive | 移動者がアクティブに移動タスクを実行しているなら1、そうでなければ0を返します。 |
isBlocked | 移動者が、集積セル割り当てリクエストにより現在ブロックされているなら、1を返します。 |
object | このA*移動者と関連付けられているTaskExecuterを返します。 |
travelPath | 移動者の現在の移動パスを利用します。 |
メソッド
addAllocation | 将来使用するためのものです。移動者のスケジュールされたセル割り当てに、集積割り当てを追加します。 |
arriveAtBridge | 将来使用するためのものです。移動者が、移動パス内で特定のセルと関連付けられているブリッジ/エレベーターに到着したことをA*に通知し、コントロールをブリッジに渡します。 |
calculatePath | 将来使用するためのものです。目的地へのA*パスを計算し、移動者のtravelPathプロパティに保存します。 |
findCollision | 将来使用するためのものです。渡された割り当てと「衝突」する既存の割り当てを探します。 |
finishPath | 将来使用するためのものです。移動者が移動を完了したことを、A*に通知します。 |
getAllocations | 移動者が現在割り当てているか、特定の時間に割り当てるようスケジュールされているAStar.Allocationの配列を取得します。 |
navigatePath | 将来使用するためのものです。移動者の計算されたパスに沿って、キネマティクスとセルの割り当てを構築するロジックを開始します。 |
コンストラクター
AStar.Traveler | 指定したTaskExecuterに基づいて、AStar.Travelerオブジェクトを構築します。 |
詳細
AStar.Traveler.travelPath
readonly travelPath
説明
移動者の現在の移動パスを利用します。
移動者のtravelPathは、移動者が現在の目的地へ移動する際に横断するA*グリッドセルの現在のシーケンスを表します。travelPathは、「length」プロパティと配列アクセサーの使用を含めて配列タイプを使用することで利用できます。
for (int i = 1; i <= traveler.travelPath.length; i++) {
AStar.Cell cell = traveler.travelPath[i].cell;
...
}
travelPathの各要素には、横断するAStar.Cellが含まれます。
AStar.Cell cell = traveler.travelPath[1].cell;
また、travelPathにはindexOf()メソッドも含まれており、特定のグリッドセルに対応するインデックス(存在する場合)を検索します。
int index = traveler.travelPath.indexOf(cell);
travelPathには、isBlocked()メソッドも含まれています。これは、A*グリッドを動的に変更したとき、移動者をプリエンプトし、新しいグリッドの変更に基づいてパスを再計算するべきかを判定するために使用されます。
if (traveler.travelPath.isBlocked()) {
...
}
AStar.Traveler.addAllocation()
addAllocation( AStar.Allocation alloc , int force , int notifyPendingAllocations ) |
パラメータ
alloc | 追加するターゲット割り当て。 |
force | 1を渡すと、他の割り当てとの衝突にかかわらず割り当てが強制的に追加されます。0を渡すと強制が行われません。 |
notifyPendingAllocation | 1を渡すと、この割り当てと衝突する移動者は、衝突したときにOnBlockイベントを発生させます。 |
説明
将来使用するためのものです。移動者のスケジュールされたセル割り当てに、集積割り当てを追加します。
このメソッド呼び出しは、自分のA*割り当て/ナビゲーションスキーマを実装する高度なユーザー向けです。このメソッドは、OnCalculatePathなどの移動者イベントをリッスンしてデフォルトのパス計算/ナビゲーション機構をオーバーライドする場合のみ呼び出します。通常のユーザーの場合、このメソッドはnavigatePath()によって自動的に呼び出されます。
AStar.Traveler.arriveAtBridge()
arriveAtBridge( int pathIndex ) |
パラメータ
pathIndex | ブリッジに関連付けられている移動パスのインデックス。 |
説明
将来使用するためのものです。移動者が、移動パス内で特定のセルと関連付けられているブリッジ/エレベーターに到着したことをA*に通知し、コントロールをブリッジに渡します。
このメソッド呼び出しは、自分のA*割り当て/ナビゲーションスキーマを実装する高度なユーザー向けです。このメソッドは、OnCalculatePathなどの移動者イベントをリッスンしてデフォルトのパス計算/ナビゲーション機構をオーバーライドする場合のみ呼び出します。
AStar.Traveler.calculatePath()
calculatePath( Object object , int flags = 0 ) |
calculatePath( Vec3 dest , int flags = 0 ) |
パラメータ
object | ターゲットの目的地オブジェクト。 |
dest | ターゲットの目的地モデルの場所。 |
flags | 計算用の構成フラグ。 |
説明
将来使用するためのものです。目的地へのA*パスを計算し、移動者のtravelPathプロパティに保存します。
このメソッド呼び出しは、自分のA*割り当て/ナビゲーションスキーマを実装する高度なユーザー向けです。このメソッドは、OnCalculatePathなどの移動者イベントをリッスンしてデフォルトのパス計算/ナビゲーション機構をオーバーライドする場合のみ呼び出します。
AStar.Traveler.findCollision()
findCollision( AStar.Allocation alloc , int ignoreSameTravelerAllocs ) |
パラメータ
alloc | 追加するターゲット割り当て。 |
ignoreSameTravelerAllocs | 1なら、この移動者について割り当てを調べません。 |
説明
将来使用するためのものです。渡された割り当てと「衝突」する既存の割り当てを探します。
このメソッド呼び出しは、自分のA*割り当て/ナビゲーションスキーマを実装する高度なユーザー向けです。このメソッドは、OnCalculatePathなどの移動者イベントをリッスンしてデフォルトのパス計算/ナビゲーション機構をオーバーライドする場合のみ呼び出します。
AStar.Traveler.finishPath()
finishPath( ) |
説明
将来使用するためのものです。移動者が移動を完了したことを、A*に通知します。
このメソッド呼び出しは、自分のA*割り当て/ナビゲーションスキーマを実装する高度なユーザー向けです。このメソッドは、OnCalculatePathなどの移動者イベントをリッスンしてデフォルトのパス計算/ナビゲーション機構をオーバーライドする場合のみ呼び出します。
AStar.Traveler.getAllocations()
getAllocations( double time = -1 ) |
パラメータ
time | 一連の割り当てを取得する対象となる時間です。 |
説明
移動者が現在割り当てているか、特定の時間に割り当てるようスケジュールされているAStar.Allocationの配列を取得します。
割り当ては、lengthプロパティと配列アクセサーの使用を含めて配列として利用できます。
var allocations = traveler.getAllocations();
for (int i = 1; i <= allocations.length; i++) {
AStar.Cell cell = allocations[i].cell;
}
移動者の割り当ては移動者のtravelPathと相関関係にありますが、それぞれ異なるものです。移動者のパス上の各エントリは、関連付けられた割り当てを(特に、移動者が対角線方向に移動しているときに)最大3個設定できます。たとえば、移動者のtravelPathにセル(4, 4)からセル(5, 5)への走査を含む場合、移動者は対角線方向の移動の一部として、目的地セル(5, 5)に加えてセル(4, 5)および(5, 4)の割り当てを必要とします。
AStar.Traveler Constructor
AStar.Traveler( treenode te ) |
パラメータ
te | A*移動者としてA*ネットワークに接続されるTaskExecuter。 |
説明
指定したTaskExecuterに基づいて、AStar.Travelerオブジェクトを構築します。
ツリーノードからキャストするのは正しくありません。AStar.Traveler traveler = AStar.Traveler(te); // correct
AStar.Traveler traveler = te; // incorrect