Ejemplo n.º 1
0
        // 衝突時に実行
        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);
                }
            }
        }
Ejemplo n.º 2
0
        // 衝突時に実行
        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;
                }
            }
        }
Ejemplo n.º 3
0
        // 衝突時に実行
        private void CollideWith(CollidableObject obj)
        {
            // nullだったら終了
            if (obj == null)
            {
                return;
            }

            // 衝突対象がSurveyを実行しないオブジェクトだった場合,相手のOnCollisionも実行
            if (!obj.doSurvey)
            {
                obj.OnCollision(this);
            }

            // 自身のOnCollisiionを実行
            OnCollision(obj);
        }
Ejemplo n.º 4
0
        // 衝突時に実行
        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);
            }
        }
Ejemplo n.º 5
0
 // 衝突時に実行される内容をオーバーライドして設定できる
 protected virtual void OnCollision(CollidableObject obj)
 {
 }