// 衝突時に実行 protected override void OnCollision(CollidableObject obj) { // 衝突対象が自機弾だったら if (obj is Ball) { // スコアを加算 mainNode.score += 1; // HPを1減らす hp--; // HPが0になったら自身を削除 if (hp == 0) { // 死亡時エフェクトを再生 Parent.AddChildNode(new DeathEffect(Position)); // 自身を削除 Parent.RemoveChildNode(this); // 死亡音を読み込む var deathSound = Sound.LoadStrict("Resources/Explosion.wav", true); // 死亡音を再生 Engine.Sound.Play(deathSound); } else { // HPが減ったのでテクスチャを変更 String path = "Resources/Block" + hp.ToString() + ".png"; Texture = Texture2D.LoadStrict(path); } } }
// 衝突時に実行 protected override void OnCollision(CollidableObject obj) { // 衝突対象がBlockだったら if (obj is Block) { // 反射 Angle = 180.0f - Angle; Console.WriteLine("Angle is {0}", Angle); //Parent?.RemoveChildNode(this); } else if (obj is Bar) { float angle = 45.0f; float ballCenter = Position.X + ContentSize.X / 2; float barCenter = obj.Position.X + obj.ContentSize.X / 2; float toAngle = ballCenter - barCenter; toAngle = toAngle * angle / obj.ContentSize.X / 2; Console.WriteLine("Ball {0}, Bar {1}, toAngle {2}", ballCenter, barCenter, toAngle); Angle = (float)toAngle; //Angle = 0.0f; } else if (obj is SpecialBlock) { switch (obj.kind) { // Ball case 0: mainNode.AddBall(); break; // Speed case 1: velocity *= 2; break; // HP default: // 読み取りをする var x = mainNode.characterNode.Children; // Copy // もとのBlockを削除 // break; } } }
// 衝突時に実行 private void CollideWith(CollidableObject obj) { // nullだったら終了 if (obj == null) { return; } // 衝突対象がSurveyを実行しないオブジェクトだった場合,相手のOnCollisionも実行 if (!obj.doSurvey) { obj.OnCollision(this); } // 自身のOnCollisiionを実行 OnCollision(obj); }
// 衝突時に実行 protected override void OnCollision(CollidableObject obj) { // 衝突対象が自機弾だったら if (obj is Ball) { var x = mainNode.characterNode.Children; // スコアを加算 mainNode.score += 1; // 死亡時エフェクトを再生 //Parent.AddChildNode(new DeathEffect(Position)); // 自身を削除 Parent.RemoveChildNode(this); // 死亡音を読み込む //var deathSound = Sound.LoadStrict("Resources/Explosion.wav", true); // 死亡音を再生 //Engine.Sound.Play(deathSound); } }
// 衝突時に実行される内容をオーバーライドして設定できる protected virtual void OnCollision(CollidableObject obj) { }