Jypeli 10
The simple game programming library
Collisions.cs
Siirry tämän tiedoston dokumentaatioon.
1using Jypeli.Physics;
2using System;
3
4namespace Jypeli
5{
6 public partial class PhysicsObject
7 {
8 private Ignorer _collisionIgnorer = null;
9
14 {
15 get { return _collisionIgnorer; }
16 set
17 {
18 _collisionIgnorer = value;
20 }
21 }
22
28 public virtual int CollisionIgnoreGroup
29 {
30 get
31 {
32 var groupIgnorer = CollisionIgnorer as JypeliGroupIgnorer;
33 return groupIgnorer != null ? groupIgnorer.LegacyGroup : 0;
34 }
35 set
36 {
37 var groupIgnorer = CollisionIgnorer as JypeliGroupIgnorer;
38
39 if ( groupIgnorer == null )
40 groupIgnorer = new JypeliGroupIgnorer();
41 groupIgnorer.LegacyGroup = value;
42 CollisionIgnorer = groupIgnorer;
43
44 }
45 }
46
52 {
53 get { return Body.IgnoresCollisionResponse; }
54 set { Body.IgnoresCollisionResponse = value; }
55 }
56
61 public double Restitution
62 {
63 get { return Body.Restitution; }
64 set { Body.Restitution = value; }
65 }
66
72 public double StaticFriction
73 {
74 get
75 {
76 return Body.StaticFriction;
77 }
78 set
79 {
80 Body.StaticFriction = value;
81 }
82 }
83
89 public double KineticFriction
90 {
91 get
92 {
93 return Body.KineticFriction;
94 }
95 set
96 {
97 Body.KineticFriction = value;
98 }
99 }
100
104 public event CollisionHandler<IPhysicsObject, IPhysicsObject> Collided;
105
111 public void OnCollided( IPhysicsBody thisBody, IPhysicsBody otherBody )
112 {
113 var thisObject = thisBody.Owner;
114 var otherObject = otherBody.Owner;
115
116 if ( thisObject != this || otherObject == null || this.IsDestroyed || otherObject.IsDestroyed ) return;
117
118 if ( Collided != null )
119 {
120 if ( otherObject.ParentStructure != null ) Collided( this, otherObject.ParentStructure );
121 Collided( this, otherObject );
122 }
123
124 Brain.OnCollision( otherObject );
125 }
126
135 {
136 if (this == target)
137 return true;
139 return true;
140 if ( this.CollisionIgnorer == null || target.CollisionIgnorer == null )
141 return false;
142
143 return !this.CollisionIgnorer.CanCollide( this.Body, target.Body, target.CollisionIgnorer );
144 }
145
150 public void AddCollisionIgnoreGroup( int group )
151 {
152 var groupIgnorer = CollisionIgnorer as JypeliGroupIgnorer;
153
154 if ( groupIgnorer == null )
155 CollisionIgnorer = groupIgnorer = new JypeliGroupIgnorer();
156
157 groupIgnorer.AddGroup( group );
158 }
159
164 public void RemoveCollisionIgnoreGroup( int group )
165 {
166 var groupIgnorer = CollisionIgnorer as JypeliGroupIgnorer;
167
168 if ( groupIgnorer == null )
169 return;
170
171 groupIgnorer.RemoveGroup( group );
172 }
173
178 {
180 }
181
186 public void MakeOneWay()
187 {
190 else
192 }
193
199 public void MakeOneWay(Vector dir)
200 {
202 Body.MakeOneWay(dir);
203 else
204 throw new NotImplementedException("Tämä on käytössä vain Farseer-moottorin kanssa.");
205 }
206 }
207}
Aivoluokka peliolioille. Voidaan käyttää tekoälyn ja tilannekohtaisten toimintamallien luomiseen peli...
Definition: Brain.cs:41
virtual void OnCollision(IGameObject target)
Kutsutaan, kun tapahtuu törmäys. Perivässä luokassa methodin kuuluu kutsua vastaavaa kantaluokan meth...
Definition: Brain.cs:137
bool FarseerGame
Onko käytössä Farseer-fysiikkamoottori HUOM: Tämä saattaa poistua tulevaisuudessa jos/kun siitä tehdä...
Definition: Game.cs:113
static Game Instance
Käynnissä olevan pelin pääolio.
Definition: Game.cs:96
double Height
Olion korkeus (Y-suunnassa, korkeimmassa kohdassa).
bool IsDestroyed
Onko olio tuhottu.
Base class for Collision Ignorers to impliment.
Definition: Ignorer.cs:40
static bool CanCollide(IPhysicsBody leftBody, IPhysicsBody rightBody, Ignorer left, Ignorer right)
Definition: Ignorer.cs:42
void RemoveGroup(int groupIndex)
int LegacyGroup
Vanha törmäysryhmä yhteensopivuutta varten.
Allows us to have platforms that are one way.
Kappale joka noudattaa fysiikan lakeja, johon voi törmätä. Vaatii että käytössä on fysiikkapeli.
Definition: Collisions.cs:7
virtual int? CollisionIgnoreGroup
Törmäysryhmä. Oliot jotka ovat samassa törmäysryhmässä menevät toistensa läpi. Jos ryhmä on nolla tai...
Definition: Collisions.cs:29
double KineticFriction
Liikekitka (hidastaa kun olio on jo liikkeessä). Ks. StaticFriction (lepokitka)
Definition: Collisions.cs:90
void AddCollisionIgnoreGroup(int group)
Lisää uuden törmäyksenvälttelyryhmän.
Definition: Collisions.cs:150
IPhysicsBody Body
Fysiikkamoottorin käsittelemä fysiikkakappale.
Definition: Dimensions.cs:12
void MakeOneWay()
Tekee oliosta läpimentävän alhaalta ylöspäin (tasohyppelytaso). Huom. toimii yhdessä CollisionIgnoreG...
Definition: Collisions.cs:186
void ClearCollisionIgnoreGroups()
Poistaa kaikki törmäysryhmät, jolloin olio saa törmäillä vapaasti.
Definition: Collisions.cs:177
void RemoveCollisionIgnoreGroup(int group)
Poistaa annetun törmäyksenvälttelyryhmän.
Definition: Collisions.cs:164
virtual Ignorer CollisionIgnorer
Olio, jolla voi välttää oliota osumasta tiettyihin muihin olioihin.
Definition: Collisions.cs:14
void OnCollided(IPhysicsBody thisBody, IPhysicsBody otherBody)
Fysiikkamoottori kutsuu kun törmäys tapahtuu
Definition: Collisions.cs:111
Ignorer _collisionIgnorer
Definition: Collisions.cs:8
void MakeOneWay(Vector dir)
Tekee oliosta läpimentävän annettuun suuntaan. Tämä toimii vain Farseer-moottorin kanssa!
Definition: Collisions.cs:199
CollisionHandler< IPhysicsObject, IPhysicsObject > Collided
Tapahtuu, kun törmätään toiseen fysiikkaolioon.
Definition: Collisions.cs:104
bool IgnoresCollisionWith(PhysicsObject target)
Tarkistaa, jätetäänkö törmäämättä toiseen olioon. Ts. tarkistaa, onko joko tällä oliolla tai toisella...
Definition: Collisions.cs:134
bool IgnoresCollisionResponse
Jättääkö törmäykset huomiotta.
Definition: Collisions.cs:52
double StaticFriction
Lepokitka (hidastaa liikkeelle lähtiessä). Ks. KineticFriction (liikekitka)
Definition: Collisions.cs:73
double Restitution
Kimmoisuuskerroin (0 = ei kimmoisa, 1 = täysin kimmoisa, yli 1 = saa energiaa tyhjästä)
Definition: Collisions.cs:62
Rajapinta fysiikkamoottorin tietämää fysiikkakappaletta varten.
Definition: IPhysicsBody.cs:10
void SetCollisionIgnorer(Ignorer ignorer)
2D-vektori.
Definition: Vector.cs:67