Changeset 7648 for 2016/27/SimoR


Ignore:
Timestamp:
2016-07-03 09:01:24 (3 years ago)
Author:
sieerinn
Message:

Kerättävää rahee

Location:
2016/27/SimoR/SimplePhysicsTest
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • 2016/27/SimoR/SimplePhysicsTest/SimplePhysics/Game.cs

    r7643 r7648  
    120120                || obj.IsDestroyed 
    121121                || other.IsDestroyed 
     122                || other.IgnoresCollisionResponse 
     123                || obj.IgnoresCollisionResponse 
    122124                || (obj.CollisionIgnoreGroup > 0 && obj.CollisionIgnoreGroup == other.CollisionIgnoreGroup); 
    123125 
     
    217219            // Yritetään liikuttaa objektia. 
    218220            MoveObject(obj, requiredMovement, dt); 
     221 
     222            // Tarkistetaan törmättiinkö IgnoresCollisionResponse-ominaisuuden 
     223            // omaavien olioiden kanssa. 
     224            for (int i = objectList.Count; i >= 0; i--) 
     225            { 
     226                if (i >= objectList.Count) continue; 
     227                if (obj != objectList[i] && (obj.IgnoresCollisionResponse || objectList[i].IgnoresCollisionResponse)) 
     228                { 
     229                    if (obj.IntersectsWith(objectList[i])) 
     230                    { 
     231                        obj.CollidedWith(objectList[i]); 
     232                        objectList[i].CollidedWith(obj); 
     233                    } 
     234                } 
     235            } 
    219236        } 
    220237 
  • 2016/27/SimoR/SimplePhysicsTest/SimplePhysics/Object.cs

    r7643 r7648  
    1313 
    1414        /// <summary> 
    15         /// Onko objekti paikallaan ja fysiikasta piittaamaton. 
     15        /// Onko objekti aina paikallaan pelimaailmassa. 
    1616        /// </summary> 
    1717        public bool IsStatic { get; set; } 
     
    4848 
    4949        /// <summary> 
    50         /// Tapahtuu, kun olio murskautuu seinän ja liikkuvan staattisen objektin väliin. 
     50        /// Jättääkö olio törmäykset huomiotta. Törmäyskäsittelijät suoritetaan kuitenkin. 
     51        /// </summary> 
     52        public bool IgnoresCollisionResponse { get; set; } 
     53 
     54        /// <summary> 
     55        /// Tapahtuu, kun olio murskautuu seinän ja liikkuvan tasanteen väliin. 
    5156        /// </summary> 
    5257        public event Action Crushed; 
  • 2016/27/SimoR/SimplePhysicsTest/SimplePhysicsTest/SimplePhysicsTest/SimplePhysicsTest.cs

    r7647 r7648  
    159159        tilemap.SetTileMethod(Color.FromHexCode("C6723D"), CreateOneWayTile); 
    160160        tilemap.SetTileMethod(Color.FromHexCode("00FFFF"), CreateIceTile); 
    161         tilemap.SetTileMethod(Color.FromHexCode("FFFF00"), CreateMovingPlatform); 
     161        tilemap.SetTileMethod(Color.FromHexCode("D525DB"), CreateMovingPlatform); 
    162162        tilemap.SetTileMethod(Color.FromHexCode("B70909"), CreateDangerousBlock); 
    163163        tilemap.SetTileMethod(Color.FromHexCode("FFB949"), CreateDestroyableBrick); 
     164        tilemap.SetTileMethod(Color.FromHexCode("FFFF00"), CreateCoin); 
    164165        tilemap.SetTileMethod(Color.Blue, CreatePlayer); 
    165166        tilemap.SetTileMethod(Color.Red, CreateEnemy); 
     
    245246        player1.AddCollisionHandler("enemy", HitsEnemy); 
    246247        player1.AddCollisionHandler("death", (a, b) => player1.Destroy()); 
     248        player1.AddCollisionHandler("coin", (a, b) => b.Destroy()); 
    247249    } 
    248250 
     
    262264        enemy.FallOffPlatforms = true; 
    263265        Add(enemy); 
     266    } 
     267 
     268    private void CreateCoin(int x, int y) 
     269    { 
     270        var coin = new SimplePhysics.Object(TileSize * 0.99, TileSize * 0.99); 
     271        coin.Position = TileToWorldPosition(x, y); 
     272        coin.Tag = "coin"; 
     273        coin.Color = Color.Yellow; 
     274        coin.IgnoresCollisionResponse = true; 
     275        coin.IgnoresGravity = true; 
     276        Add(coin); 
    264277    } 
    265278 
Note: See TracChangeset for help on using the changeset viewer.