Jypeli 10
The simple game programming library
ShootingPlatformCharacter.cs
Siirry tämän tiedoston dokumentaatioon.
1using Jypeli;
2using System;
3
8{
14 public ShootingPlatformCharacter(double width, double height) : base(width, height)
15 {
17 }
18
25 public ShootingPlatformCharacter(double width, double height, Shape shape) : base(width, height, shape)
26 {
28 }
29
30 private TimeSpan _timeBetweenShots = TimeSpan.FromSeconds(1.0);
31
35 public TimeSpan TimeBetweenShots
36 {
37 get { return _timeBetweenShots; }
38 set
39 {
40 _timeBetweenShots = value;
41 if (timer != null)
42 timer.Interval = value.TotalSeconds;
43 }
44 }
45
49 public GameObject Target { get; set; }
50
55 public double MaximumShootingDistance { get; set; } = double.MaxValue;
56
57 private Timer timer;
58
60 public override void Destroy()
61 {
62 base.Destroy();
64 }
65
67 {
68 if (timer != null)
69 timer.Stop();
70
72 }
73
74 private void Shoot()
75 {
76 if (Weapon == null || Target == null || IsDestroyed || !IsAddedToGame ||
78 return;
79
80 Vector distanceVector = Target.Position - Position;
81
82 if (distanceVector.Magnitude > MaximumShootingDistance)
83 return;
84
85 Weapon.Shoot();
86 }
87
89 public override void Update(Time time)
90 {
91 if (Weapon == null || Target == null || Target.IsDestroyed || !Target.IsAddedToGame)
92 return;
93
94 Vector distanceVector = Target.Position - Position;
95
96 if (distanceVector.Magnitude > MaximumShootingDistance)
97 return;
98
99 Weapon.Angle = distanceVector.Angle;
100
101 base.Update(time);
102 }
103}
Pelialueella liikkuva olio. Käytä fysiikkapeleissä PhysicsObject-olioita.
Definition: Appearance.cs:34
override Vector?? Position
Definition: Dimensions.cs:72
bool IsAddedToGame
Onko olio lisätty peliin.
Action AddedToGame
Tapahtuu, kun olio lisätään peliin.
bool IsDestroyed
Onko olio tuhottu.
override Vector?? Position
Definition: Dimensions.cs:30
Kuvio.
Definition: Shapes.cs:47
Ajastin, joka voidaan asettaa laukaisemaan tapahtumia tietyin väliajoin.
Definition: Timer.cs:38
double Interval
Aika sekunneissa, jonka välein TimeOut tapahtuu.
Definition: Timer.cs:87
void Stop()
Pysäyttää ajastimen ja nollaa sen tilan.
Definition: Timer.cs:292
static Timer CreateAndStart(double interval, Action onTimeout)
Luo ja käynnistää uuden ajastimen tietyllä tapahtuma-aikavälillä sekä aliohjelmalla,...
Definition: Timer.cs:207
Tasohyppelypelin hahmo. Voi liikkua ja hyppiä. Lisäksi sillä voi olla ase.
Weapon Weapon
Hahmolla oleva ase.
Tasohyppelypelin hahmo, joka ampuu aseella automaattisesti määritellyin väliajoin.
override void Update(Time time)
Ajetaan kun pelitilannetta päivitetään. Päivityksen voi toteuttaa omassa luokassa toteuttamalla tämän...
double MaximumShootingDistance
Korkein etäisyys, jonka päästä hahmo ampuu. Jos hahmo on tätä kauempana kohteesta,...
GameObject Target
Kohde, jota hahmo ampuu.
TimeSpan TimeBetweenShots
Aika, joka kuluu ennen kuin hahmo ampuu.
ShootingPlatformCharacter(double width, double height, Shape shape)
Tasohyppelypelin hahmo, joka ampuu aseella automaattisesti määritellyin väliajoin.
ShootingPlatformCharacter(double width, double height)
Tasohyppelypelin hahmo, joka ampuu aseella automaattisesti määritellyin väliajoin.
override void Destroy()
Tuhoaa olion.
Sisältää tiedon ajasta, joka on kulunut pelin alusta ja viime päivityksestä.
Definition: Time.cs:14
2D-vektori.
Definition: Vector.cs:67
Angle Angle
Kulma radiaaneina.
Definition: Vector.cs:372
double Magnitude
Vektorin pituus.
Definition: Vector.cs:345