protected override void OnCollide(CollidableObject collidableObject) { base.OnCollide(collidableObject); if (collidableObject is Player) { Parent.RemoveChildNode(this); } }
protected override void OnCollide(CollidableObject collidableObject) { base.OnCollide(collidableObject); if (collidableObject is PlayerBullet) { AddScore(Score); Parent.RemoveChildNode(this); } }
protected override void OnCollide(CollidableObject collidableObject) { base.OnCollide(collidableObject); if (collidableObject is Enemy) { Parent.RemoveChildNode(this); _playerInfo.playerBullets.Dequeue(); } }
protected override void OnCollide(CollidableObject collidableObject) { base.OnCollide(collidableObject); if (collidableObject is NomalEnemy || collidableObject is EnemyBullet) { _hp -= 1; if (_hp <= 0) { Parent.RemoveChildNode(this); } } if (collidableObject is FreezeBullet) { _playersHealth = PlayersHealth.Frozen; Texture = Texture2D.LoadStrict("Resources/FrozenPlayer.png"); } }
protected void CollideWith(CollidableObject collidableObject) { if (collidableObject == null) { return; } if (!collidableObject.doSurvey) { //衝突判定しないオブジェクトに衝突した場合、その判定しないオブジェクトの衝突時の処理を呼び出す /*例えば、自機と敵弾が衝突する場合、呼び出されたCollideWith関数の引数は敵弾(=衝突判定しないオブジェクト)になる。 * すなわち、敵弾が磁気と衝突した際に呼び出すべき処理(OnCollide関数)をcollidableObject.Oncollode(this(自機のこと))で呼び出している */ collidableObject.OnCollide(this); } /*上の例に従えば、以下の処理は「自機が敵弾と衝突した際に呼び出す処理」を呼び出すのに相当する。(あくまでOncollideを呼び出したのは自機である)*/ OnCollide(collidableObject); }
protected virtual void OnCollide(CollidableObject collidableObject) { //継承先で処理を実装する }