本文整理汇总了C#中PhysicsObject.Hit方法的典型用法代码示例。如果您正苦于以下问题:C# PhysicsObject.Hit方法的具体用法?C# PhysicsObject.Hit怎么用?C# PhysicsObject.Hit使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类PhysicsObject
的用法示例。
在下文中一共展示了PhysicsObject.Hit方法的11个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: KaytaRakettia
void KaytaRakettia(PhysicsObject pelaaja)
{
pelaaja.Hit(Vector.FromLengthAndAngle(10, pelaaja.Angle+Angle.FromDegrees(90) ));
}
示例2: uusiomena
void uusiomena(int level)
{
for (int i = 0; i < level; i++)
{
PhysicsObject omena = new PhysicsObject(50, 50);
omena.Shape = Shape.Circle;
omena.Color = Color.Red;
GameObject lehti = new GameObject(20, 20);
omena.Y = Screen.Top;
lehti.Shape = Shape.Heart;
lehti.Color = Color.DarkGreen;
Add(omena);
lehti.Y = 30;
omena.Add(lehti);
Mouse.ListenOn(omena, MouseButton.Left,
ButtonState.Pressed, klikattuomenaa,
"Omenaa Klikattu", omena);
Keyboard.Listen(Key.R, ButtonState.Pressed, Nollaa, "nollaa");
omena.Hit(RandomGen.NextVector(50, 100));
}
omenoitailmassa = level;
}
示例3: OnEnemiesCollide
void OnEnemiesCollide(PhysicsObject thisCollides, PhysicsObject toThat)
{
if (thisCollides.Tag == "h" && toThat.Tag == "m")
{
OnEnemiesCollide(toThat, thisCollides);
return;
}
// Already fleeing
if (thisCollides.IgnoresCollisionResponse || toThat.IgnoresCollisionResponse)
return;
// Push them apart and then togehter.
Vector delta = thisCollides.Position - toThat.Position;
toThat.Hit(toThat.Position + delta * 6.0);
thisCollides.Hit(thisCollides.Position - delta * 6.0);
Timer.SingleShot(0.1, () =>
{
toThat.MoveTo(thisCollides.Position, unitMoveSpeed);
thisCollides.MoveTo(toThat.Position, unitMoveSpeed);
});
double thisHitMultiplier = 1.0;
double thatHitMultiplier = 1.0;
//* Kauhea mörkö pelottaa metsureita ja mönkijöitä kaksinkertaisella voimalla
if ( (thisCollides.Image == mRepeller && toThat.Image == hPreparer) ||
(thisCollides.Image == mRepeller && toThat.Image == hGatherer) )
{
thisHitMultiplier = 2.0;
thatHitMultiplier = 0.5;
}
//* Eläimet karkoittavat toimittajia kaksinkertaisella teholla (mörköhavainnot osoittautuivat vain metsässä jolkottelevaksi hirveksi)
if (thisCollides.Image == mGatherer && toThat.Image == hRepeller)
{
thisHitMultiplier = 2.0;
thatHitMultiplier = 0.5;
}
//* Mönkijä karkoittaa pärinällään eläimiä kaksinkertaisella teholla
if (toThat.Image == hGatherer && thisCollides.Image == mGatherer)
{
thisHitMultiplier = 0.5;
thatHitMultiplier = 2.0;
}
//* Toimittaja karkoittaa haamumörköjä ja kauheita mörköjä kaksinkertaisella teholla
if ((toThat.Image == hRepeller && thisCollides.Image == mRepeller ) ||
(toThat.Image == hRepeller && thisCollides.Image == mPreparer ))
{
thisHitMultiplier = 0.5;
thatHitMultiplier = 2.0;
}
// First subobject is assumed to be health bar
DoubleMeter hpThis = (DoubleMeter)(thisCollides.Objects.First() as ProgressBar).Meter;
DoubleMeter hpThat = (DoubleMeter)(toThat.Objects.First() as ProgressBar).Meter;
hpThis.AddValue(hitPerHit * thatHitMultiplier);
hpThat.AddValue(hitPerHit * thisHitMultiplier);
// Make sure we are locked into deadly? combat.
// This requires us to make sure we try to move to the end of the line.
// TODO: Find out why sometimes the unit shoots away. This quickfix tries to fix it)
Timer.SingleShot(0.25, () => RedoMoveTo(thisCollides));
// TODO: Find out why sometimes the unit shoots away. This quickfix tries to fix it)
Timer.SingleShot(0.25, () => RedoMoveTo(toThat));
}
示例4: PudotaOmenoita
void PudotaOmenoita(int lukumaara)
{
for (int i = 0; i < lukumaara; i++)
{
PhysicsObject omena = new PhysicsObject(80, 80);
omena.Shape = Shape.Circle;
omena.Color = Color.Red;
omena.Y = Screen.Top;
omena.Restitution = 0.5;
GameObject lehti = new GameObject(30, 30);
lehti.Shape = Shape.Star;
lehti.Color = Color.Green;
lehti.Y = 40;
omena.Add(lehti);
Add(omena);
omena.Hit(RandomGen.NextVector(50, 100));
Mouse.ListenOn(omena, MouseButton.Left,
ButtonState.Pressed, OmenaaKlikattu,
"omenaa klikattu", omena);
}
omenoitaIlmassa = lukumaara;
}
示例5: UusiOmena
void UusiOmena(int lukumaara)
{
for (int i = 0; i < lukumaara; i++)
{
omenoitaIlmassa = lukumaara;
PhysicsObject omena = new PhysicsObject(50, 50);
omena.Shape = Shape.Circle;
omena.Color = Color.Red;
omena.Y = Screen.Top;
GameObject lehti = new GameObject(20, 20);
lehti.Shape = Shape.Heart;
lehti.Color = Color.Green;
Add(omena);
lehti.Y = 30;
omena.Add(lehti);
Mouse.ListenOn(omena, MouseButton.Left,
ButtonState.Pressed, OmenaaKlikattu,
"omenaa kilakttu", omena);
omena.Hit(RandomGen.NextVector(60, 100));
}
}
示例6: LuoPallo
void LuoPallo()
{
for (int i = 0; i < 10; i++)
{
pallo = new PhysicsObject(70, 70);
Vector Suunta = Vector.FromLengthAndAngle(500, pallo.Angle);
pallo.Hit(Suunta);
pallo.Position = RandomGen.NextVector(200, 500);
pallo.Velocity = RandomGen.NextVector(100, 500);
pallo.Shape = Shape.Circle;
pallo.Tag = "pallo";
pallo.KineticFriction = 0.0;
pallo.Restitution = 1.0;
pallo.Image = LoadImage("popopo");
Add(pallo);
}
}
示例7: LuoKentta
void LuoKentta()
{
pallo = new PhysicsObject(40.0, 40.0);
pallo.Shape = Shape.Circle;
Add(pallo);
maila1 = LuoMaila(Level.Left + 20.0, 0.0);
maila2 = LuoMaila(Level.Right - 20.0, 0.0);
pallo.X = -200.0;
pallo.Y = 0.0;
Vector impulssi = new Vector(150.0, 0.0);
pallo.Hit(impulssi);
pallo.Restitution = 2.0;
vasenReuna = Level.CreateLeftBorder();
vasenReuna.Restitution = 1.0;
vasenReuna.IsVisible = false;
oikeaReuna = Level.CreateRightBorder();
oikeaReuna.Restitution = 1.0;
oikeaReuna.IsVisible = false;
PhysicsObject ylaReuna = Level.CreateTopBorder();
ylaReuna.Restitution = 1.0;
ylaReuna.KineticFriction = 0.0;
ylaReuna.IsVisible = false;
PhysicsObject alaReuna = Level.CreateBottomBorder();
alaReuna.Restitution = 1.0;
alaReuna.IsVisible = false;
alaReuna.KineticFriction = 0.0;
Level.Background.Color = Color.Black;
Camera.ZoomToLevel();
AddCollisionHandler(pallo, KasittelePallonTormays);
}
示例8: Begin
public override void Begin()
{
SetWindowSize(1024, 768);
pallo = new PhysicsObject(60 * SKAALAUS, 60 * SKAALAUS, Shape.Circle);
pallo.Color = Color.Red;
Add(pallo);
AddCollisionHandler(pallo, PalloTormaa);
pallonAani = LoadSoundEffect("justroll");
tormaysAani = LoadSoundEffect("clonkroll");
// Kaksi tilaa, demo, jossa pallo kiertää ympyrää vaihtaen vauhtiaan ja pelitila (toistaiseksi ilman mailoja)
demoNappi = new PushButton(100, 50, "Demo");
demoNappi.Clicked += PeliTaiDemoPaalle;
demoNappi.X = Screen.Left + 75;
demoNappi.Y = Screen.Top - 50;
Add(demoNappi);
if (demo)
{
demoNappi.Text = "Peli";
kentta = new GameObject(500, 500);
Add(kentta, -1);
Timer.SingleShot(pallonNopeus, PalloPyorahtaa);
}
else
{
demoNappi.Text = "Demo";
pallo.CanRotate = false;
pallo.KineticFriction = 0.1;
var reunanleveys = 20;
PhysicsObject vasenLaita = PhysicsObject.CreateStaticObject(reunanleveys, 3660 * SKAALAUS + reunanleveys*2);
vasenLaita.X = -1220 * SKAALAUS / 2 - reunanleveys/2;
PhysicsObject oikeaLaita = PhysicsObject.CreateStaticObject(reunanleveys, 3660 * SKAALAUS + reunanleveys * 2);
oikeaLaita.X = +1220 * SKAALAUS / 2 + reunanleveys / 2;
PhysicsObject p1Maali = PhysicsObject.CreateStaticObject(1220 * SKAALAUS + 0, reunanleveys);
p1Maali.Color = Color.Red;
p1Maali.Y = -3660 * SKAALAUS / 2 - reunanleveys / 2;
PhysicsObject p2Maali = PhysicsObject.CreateStaticObject(1220 * SKAALAUS + 0, reunanleveys);
p2Maali.Color = Color.Blue;
p2Maali.Y = 3660 * SKAALAUS / 2 + reunanleveys / 2;
// Estä laitoja törmäilemästä keskenään
vasenLaita.CollisionIgnoreGroup = 1;
oikeaLaita.CollisionIgnoreGroup = 1;
p1Maali.CollisionIgnoreGroup = 1;
p2Maali.CollisionIgnoreGroup = 1;
kentta = new GameObject(1220 * SKAALAUS + 0, 3660 * SKAALAUS + reunanleveys * 2);
kentta.IsVisible = false;
Add(kentta, -1);
// Laidat ovat kimmoisia
var kimmoisuus = 0.99;
vasenLaita.Restitution = kimmoisuus;
oikeaLaita.Restitution = kimmoisuus;
p1Maali.Restitution = kimmoisuus;
p2Maali.Restitution = kimmoisuus;
pallo.Restitution = kimmoisuus;
Add(vasenLaita); Add(oikeaLaita); Add(p1Maali); Add(p2Maali);
var suunta = new Vector(10, 300);
alkuNopeus = suunta.Magnitude;
pallo.Hit(suunta);
Timer.SingleShot(0.1, PalloLiikkuu);
}
Mouse.IsCursorVisible = true;
Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
}
示例9: LuoVihollinen
void LuoVihollinen(Vector paikka, double kokoX, double kokoY)
{
Enemy pahis1 = new Enemy(kokoX * 0.8, kokoY * 0.8, 3); //3. parametri on pahis1:n elämät
pahis1.Position = paikka;
pahis1.Tag = "pahis1";
pahis1.Image = pahiksenkuva;
pahikset.Add(pahis1);
Add(pahis1);
FollowerBrain seuraaja = new FollowerBrain(pelaaja);
seuraaja.Speed = 50;
seuraaja.TurnWhileMoving = true;
List<Vector> reitti = new List<Vector>(); //tekoälyn reitin pisteiden koordinaatit
reitti.Add(new Vector(pahis1.X + 15, pahis1.Y)); //nämä ovat vain testejä JA NE TULEE VAIHTAA KUN PELIN TEKEMINEN EDISTYY
reitti.Add(new Vector(pahis1.X + 15, pahis1.Y));
PathFollowerBrain odottaja = new PathFollowerBrain();
odottaja.ReverseReturn = true;
odottaja.Loop = true;
odottaja.Path = reitti;
pahis1.Brain = odottaja;
AddCollisionHandler(pahis1, PahikseenOsui);
Timer ampumisajastin = new Timer(); // käytetään ampumisen ajastamiseen
ampumisajastin.Interval = 3.0;
ampumisajastin.Timeout += delegate
{
Vector suunta = pelaaja.Position - pahis1.Position;
if (pahis1.IsDestroyed == false && pahis1.IsAddedToGame == true && pahis1.SeesObject(pelaaja) && Math.Abs(pahis1.Angle.Radians - suunta.Angle.Radians) < Math.PI / 2 && pahis1.isPoisonend == false) // pitkä rivi jolla tarkastetaan näkeekö pahis1 pelaajaa
{
PhysicsObject ammus = new PhysicsObject(30, 10);
ammus.Position = pahis1.Position;
ammus.MaximumLifetime = TimeSpan.FromSeconds(2);
ammus.Angle = pahis1.Angle;
Add(ammus);
ammus.Hit(Vector.FromLengthAndAngle(1000, pahis1.Angle));
}
};
ampumisajastin.Start();
//reittihaku
TestiPalikka testipalikka = new TestiPalikka(10, 10);
testipalikka.Mass = 0;
testipalikka.Position = pahis1.Position;
testipalikka.MaximumLifetime = TimeSpan.FromSeconds(2.0);
AddCollisionHandler(testipalikka, TestiTormays);
Timer testiajastin = new Timer(); // käytetään kulman laskemiseen tietyn ajan välein
testiajastin.Interval = 2.0;
testiajastin.Timeout += delegate
{
Angle satkulma = RandomGen.NextAngle();
Add(testipalikka);
Vector hitvektori = Vector.FromLengthAndAngle(500,satkulma);
MessageDisplay.Add("Testipalikka hit : " + satkulma);
testipalikka.Hit(hitvektori);
};
Timer tarkastin = new Timer();
tarkastin.Interval = 2.1;
tarkastin.Timeout += delegate
{
if (testipalikka.Tormasi == false)
{
}
};
}
示例10: heitaVeitsi
void heitaVeitsi()
{
if (hVeitsiLaskuri.Value > 0)
{
HeittoVeitsienMaara--;
hVeitsiLaskuri.Value--;
PhysicsObject hVeitsi = new PhysicsObject(20, 5); //luodaan heittoveitsi
hVeitsi.Position = pelaaja.Position; //asetetaan paikaksi pelaaja
hVeitsi.Tag = "hVeitsi";
hVeitsi.Image = heittov;//lisätään tekstuuri
hVeitsi.CollisionIgnoreGroup = 2;
Add(hVeitsi);//lisätään heittoveitsi peliin
hVeitsi.Angle = pelaaja.Angle; //kulmaksi pelaajan kulma
Vector suunta = (Mouse.PositionOnWorld - pelaaja.Position).Normalize() * 500; //suuntavektori
hVeitsi.Hit(suunta);//lyödään veitsi liikkeelle
AddCollisionHandler<PhysicsObject, Enemy>(hVeitsi, heittoveitsiOsuiEnemyyn);// voisi kai tehdä helpomminkin
AddCollisionHandler(hVeitsi, heittoveitsiOsuiPhysicsObjectiin);// voisi kai tehdä helpomminkin
}
}
示例11: ammuNuoli
void ammuNuoli()
{
if (ase == "puhPutki")
{
PhysicsObject nuoli = new PhysicsObject(20, 7); //luodaan nuoli
nuoli.Position = pelaaja.Position; //asetetaan paikaksi pelaaja
nuoli.Image = nuolikuva;//lisätään tekstuuri
nuoli.Tag = "nuoli";
nuoli.CollisionIgnoreGroup = 2;//lisätään samaan CollisionIgnoreGroupiin pelaajan ja heittoveitsien kanssa.
Add(nuoli);//lisätään heittoveitsi peliin
nuoli.Angle = pelaaja.Angle; //kulmaksi pelaajan kulma
Vector suunta = (Mouse.PositionOnWorld - pelaaja.Position).Normalize() * 500; //suuntavektori
nuoli.Hit(suunta);//lyödään veitsi liikkeelle
nuoli.MaximumLifetime = TimeSpan.FromSeconds(2.0);
//AddCollisionHandler<PhysicsObject, Enemy>(nuoli, nuoliOsuiEnemyyn);// voisi kai tehdä helpomminkin
// AddCollisionHandler(nuoli, nuoliOsuiPhysicsObjectiin);// voisi kai tehdä helpomminkin
}
else if (ase == "varsJousi")
{
PhysicsObject eNuoli = new PhysicsObject(20, 5); //luodaan räjähtävä nuoli
eNuoli.Position = pelaaja.Position;
eNuoli.Tag = "eNuoli";
eNuoli.Image = enuolenkuva;
eNuoli.CollisionIgnoreGroup = 2;//lisätään samaan CollisionIgnoreGroupiin pelaajan ja heittoveitsien kanssa.
Add(eNuoli);
eNuoli.Angle = pelaaja.Angle;
Vector suunta = (Mouse.PositionOnWorld - pelaaja.Position).Normalize() * 800; //suuntavektori
eNuoli.Hit(suunta);//lyödään veitsi liikkeelle
eNuoli.MaximumLifetime = TimeSpan.FromSeconds(2.0);
AddCollisionHandler(eNuoli, eNuoliOsui);
}
else return;
}