コード例 #1
0
 void CheckAsteroidsCollision()
 {
     for (var i = 0; i < _asteroids.Length; i++)
     {
         var asteroid1 = _asteroids[i];
         if (!asteroid1.Frozen)
         {
             for (var j = i + 1; j < _asteroids.Length; j++)
             {
                 var asteroid2 = _asteroids[j];
                 if (!asteroid2.Frozen)
                 {
                     if (ISceneObjectInfo.CheckCollision(asteroid1, asteroid2, out var deltaPositionNormalized))
                     {
                         asteroid1.CollidedWith.Value = asteroid2;
                         asteroid2.CollidedWith.Value = asteroid1;
                         asteroid2.LinearVelocity    -= deltaPositionNormalized * asteroid1.Scale.Value * 0.01f;
                         asteroid1.LinearVelocity    += deltaPositionNormalized * asteroid2.Scale.Value * 0.01f;
                     }
                 }
             }
             if (ISceneObjectInfo.CheckCollision(asteroid1, _shipInfo, out var deltaPositionNormalized2))
             {
                 MessageBroker.Default.Publish(SharedMessage.Create(this, SharedMessage.MessageType.SHIP_COLLIDED, asteroid1));
             }
         }
     }
 }
コード例 #2
0
 void CheckBulletsCollision()
 {
     for (var i = 0; i < _asteroids.Length; i++)
     {
         var asteroid1 = _asteroids[i];
         if (!asteroid1.Frozen)
         {
             for (var j = 0; j < _bullets.Count; j++)
             {
                 var bullet = _bullets[j];
                 if (ISceneObjectInfo.CheckCollision(asteroid1, bullet, out var deltaPositionNormalized))
                 {
                     asteroid1.Durability -= _shipInfo.WeaponDamage;
                     if (asteroid1.Durability <= 0f)
                     {
                         MessageBroker.Default.Publish(SharedMessage.Create(this, SharedMessage.MessageType.CREATE_EXPLOSION, asteroid1.Position.Value));
                         asteroid1.Position.Value = new Vector3(0f, 0f, -2f);
                     }
                     bullet.Position.Value += new Vector3(0f, 0f, 20f);
                     _bullets.Remove(bullet);
                     j--;
                 }
             }
         }
     }
 }