前回の続きです。
前回はCreepクラスを継承して2種類の敵を設定する所まで見ました。
次は、DataModelクラスとWayPointクラスを利用して、敵に動作を与える箇所につて見ていきます。
Creep.mの以下の箇所
- (WayPoint *)getCurrentWaypoint{ DataModel *m = [DataModel getModel]; WayPoint *waypoint = (WayPoint *) [m._waypoints objectAtIndex:self.curWaypoint]; return waypoint; } - (WayPoint *)getNextWaypoint{ DataModel *m = [DataModel getModel]; int lastWaypoint = m._waypoints.count; self.curWaypoint++; if (self.curWaypoint > lastWaypoint) self.curWaypoint = lastWaypoint - 1; WayPoint *waypoint = (WayPoint *) [m._waypoints objectAtIndex:self.curWaypoint]; return waypoint; }「getCurrentWaypoint」は現在のWaypointを取得します。
要は今の敵の位置ですね。
「getNextWaypoint」は次のWaypointを返します。
要は次にどこまで移動するかの情報ですね。
この両メソッドを見てみると、
WayPoint *waypoint = (WayPoint *) [m._waypoints objectAtIndex:self.curWaypoint];という共通箇所があるのが見れると思います。
ここでは、Creepクラスで保持している「curWaypoint」からwaypointを見つけて返却しています。
次の場所を取得したい場合は、「curWaypoint」の値を増やせばOKです。
ただし、増やした値が配列の最後の値なのかの確認は必要ですが。
配列の末尾の値になったら、「curWaypoint」の値はそれ以上増えません(これ以上移動しないって意味です)。
値を「0」にすると敵はループし続けます。
getNextWaypoint内の
self.curWaypoint = lastWaypoint – 1;を
self.curWaypoint = 0;
に変更してみてください。
こうすると、タワーが破壊されない限りWaveが繰り返されます。
「self.curWaypoint = lastWaypoint – 1;」だと、敵が一周すると出てこなくなるのに対して
「self.curWaypoint = 0;」だと一周した後、再び敵が出てくるのがわかりますね。
今回はここまで。
次回はTutorialSceneクラスを見ていきます。
0 件のコメント:
コメントを投稿