Changeset 6246 for 2014


Ignore:
Timestamp:
2015-06-24 13:00:15 (4 years ago)
Author:
anlakane
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • 2014/30/MitjaK/Attack to Agora/Attack to Agora/Attack to Agora/Attack to Agora/Attack_to_Agora.cs

    r6237 r6246  
    115115 
    116116        Timer ajastin = new Timer(); 
    117         ajastin.Interval = 0.01; 
     117        ajastin.Interval = 1.0 / 60.0; 
    118118        ajastin.Timeout += delegate 
    119119        { 
     
    125125 
    126126    /// <summary> 
    127     /// Etsii pelaajaa lähimpänä pelaajan alla olevan lattiapalikan huipun Y-koordinaatin. 
     127    /// Etsii suoraan pelaajan alla olevan lattiapalikan Y-koordinaatin. 
    128128    /// </summary> 
    129129    /// <returns></returns> 
    130130    double EtsiVarjonY() 
    131131    { 
    132         List<GameObject> possibleFloorPieces = GetObjects(x => x.Left < taistelija.X && x.Right > taistelija.X); 
     132        Vector rayDown = new Vector(0.0, -2000.0); 
     133        List<GameObject> possibleObjects = GetObjects(x => x != taistelija && x is PhysicsObject ); 
     134        List<GameObject> objectsBelow = new List<GameObject>(); 
    133135 
    134         double highestY = double.MinValue; 
    135         int highestIndex = -1; 
    136  
    137         for (int i = 0; i < possibleFloorPieces.Count; i++) 
     136        for (int i = 0; i < possibleObjects.Count; i++) 
    138137        { 
    139             double currentY = possibleFloorPieces[i].Y; 
    140  
    141             if (currentY > highestY && currentY < taistelija.Bottom)  
     138            if (possibleObjects[i].IsBlocking(new Vector(taistelija.X, taistelija.Bottom), new Vector(taistelija.X, taistelija.Bottom) + rayDown)) 
    142139            { 
    143                 highestY = currentY; 
    144                 highestIndex = i; 
     140                objectsBelow.Add(possibleObjects[i]); 
    145141            } 
    146142        } 
    147143 
    148         return possibleFloorPieces[highestIndex].Top; 
     144        if (objectsBelow.Count == 0) 
     145            return double.MinValue; 
     146 
     147        double minDistance = double.MaxValue; 
     148        int minIndex = -1; 
     149 
     150        for (int i = 0; i < objectsBelow.Count; i++) 
     151        { 
     152            double currentDistance = Math.Abs(taistelija.Bottom - objectsBelow[i].Top); 
     153            if (currentDistance < minDistance) 
     154            { 
     155                minDistance = currentDistance; 
     156                minIndex = i; 
     157            } 
     158        } 
     159 
     160        return objectsBelow[minIndex].Top; 
    149161    } 
     162 
    150163 
    151164    void SeuraavaKentta(PhysicsObject tormaaja, PhysicsObject tormatty) 
Note: See TracChangeset for help on using the changeset viewer.