2 using System.Collections.Generic;
11 private Vector[] wayPoints;
12 private Angle[] angles = null;
50 this.wayPoints =
new Vector[wayPoints.Count];
51 wayPoints.CopyTo( this.wayPoints, 0 );
63 throw new Exception(
"Call Insert() first" );
64 return angles[wayPointIndex];
72 if ( wayPoints.Length < 2 )
74 throw new ArgumentException(
"Must have at least 2 points" );
77 angles =
new Angle[wayPoints.Length];
79 Vector first = wayPoints[0];
80 Vector second = wayPoints[1];
81 Vector toBeginning = ( first - second ).Normalize();
82 Vector beginning = first + toBeginning;
84 Vector previousLeft, previousRight;
85 CalculatePoints( beginning, first, second, out previousLeft, out previousRight );
86 angles[0] = ( second - first ).
Angle;
88 Vector secondToLast = wayPoints[wayPoints.Length - 2];
89 Vector last = wayPoints[wayPoints.Length - 1];
90 Vector toVeryLast = ( last - secondToLast ).Normalize();
91 Vector veryLast = last + toVeryLast;
93 for (
int i = 1; i < wayPoints.Length; i++ )
95 Vector previous = wayPoints[i - 1];
96 Vector current = wayPoints[i];
99 Vector toPrevious = ( previous - current ).Normalize();
102 if ( i == wayPoints.Length - 1 )
109 next = wayPoints[i + 1];
110 toNext = ( next - current ).Normalize();
114 CalculatePoints( previous, current, next, out left, out right );
115 angles[i] = ( next - previous ).
Angle;
117 Vector center = previous + toNext / 2;
120 vertices[0] = previousLeft - center;
121 vertices[1] = previousRight - center;
122 vertices[2] = right - center;
123 vertices[3] = left - center;
139 previousRight = right;
152 TopDownPhysicsGame g = (TopDownPhysicsGame)
Game.
Instance;
165 Vector toNext = ( next - current ).Normalize();
166 Vector toPrevious = ( previous - current ).Normalize();
167 Vector direction = ( next - previous ).Normalize();
170 Vector toLeft = -perpendicular;
171 Vector toRight = perpendicular;
Color Color
Väri, jonka värisenä olio piirretään, jos tekstuuria ei ole määritelty.
Suuntakulma (rajoitettu -180 ja 180 asteen välille) asteina ja radiaaneina. Tietoja kulmasta: http://...
bool IgnoresCollisionResponse
Jättääkö olio törmäyksen huomioimatta. Jos tosi, törmäyksestä tulee tapahtuma, mutta itse törmäystä e...
Luo tien. Tie koostuu useasta pienemmästä "pätkästä".
bool IsInside(Vector point)
Onko piste p tämän olion sisäpuolella.
GameObject [] Segments
Tienpätkät.
RoadMap(IList< Vector > wayPoints)
Luo uuden RoadMapin.
Peli, johon voi lisätä pintoja, joiden päällä oliot voivat liukua. Peliin lisätyt ...
Peliolio, joka noudattaa fysiikkamoottorin määräämiä fysiikan lakeja. Voidaan kuitenkin myös laittaa ...
static readonly Color Gray
Harmaa.
void Add(IGameObject o)
Lisää olion peliin. Tavalliset oliot tulevat automaattisesti kerrokselle 0 ja ruutuoliot päällimmäise...
double DefaultFriction
Tien oletuskitka.
double DefaultWidth
Tien oletusleveys.
Sisältää valmiiksi lasketut kolmiot, joiden avulla piirtäminen on suoraviivaista. ...
Peliluokka reaaliaikaisille peleille.
void Insert()
Luo tien kentälle.
Apufunktioita listojen ja muiden tietorakenteiden käyttöön.
bool IsInside(Vector point)
Func< double, double, Shape, PhysicsObject > CreateSegmentFunction
Funktio, joka luo yksittäisen tienpätkän.
Angle GetAngle(int wayPointIndex)
Etenemissuunta pisteen kohdalla.
override Vector Position
Olion paikka koordinaatistossa. Käsittää sekä X- että Y-koordinaatin.
static PhysicsObject CreateStaticObject(double width, double height)
Tekee suorakulmaisen kappaleen, joka on staattinen (eli pysyy paikallaan).
double KineticFriction
Liikekitka. Liikettä vastustava voima joka ilmenee kun kaksi oliota liikkuu toisiaan vasten (esim...
void AddSurface(PhysicsObject surface)
Lisää peliin pinnan, jonka päällä muut oliot voivat liukua.
Pelialueella liikkuva olio. Käytä fysiikkapeleissä PhysicsObject-olioita.
Muotojen määrityksessä käytettävä kolmio.