Game Tutorial 2: NPC's bei Dynamischer Map
Wichtig Ihr Solltet das Game Tutorial 1 zu Kenntniss genomen haben, da dieses Tutorial darauf aufbaut. In diesem Möchte ich euch zeigen wie man einen NPC also eine Spielfigur mit einer "Künstlichen Intelegenz" auf der Map bewegen lässt.
Zunächst wird für dieses vorhaben eine Klasse mit dem Namen NPC Benötigt. Diese Sollte folgende eigenschaften Beinhalten:
So nun fügen wir der List<NPC> einen npc anhand des Beispieles hinzu. Haben wir dies gemacht sollten wir in unserem Timer oder Gameloop einen neuen Thread Starten der den npc im Algorhytmus erhöht.
So nun Fügen wir in unserem Paint event den Code hinzu der den NPC Zeichnet.
wie wir Sehen wird jeder NPC an der NowPoint Stelle gezeichnet. So nun wenn wir aber die Welt versetzen müssen wir auch den NPC um den Offsetwert versetzen.
Ich hoffe ich habe es verständlich rüber gebracht, grüße Andy[/quote]
Wichtig Ihr Solltet das Game Tutorial 1 zu Kenntniss genomen haben, da dieses Tutorial darauf aufbaut. In diesem Möchte ich euch zeigen wie man einen NPC also eine Spielfigur mit einer "Künstlichen Intelegenz" auf der Map bewegen lässt.
Zunächst wird für dieses vorhaben eine Klasse mit dem Namen NPC Benötigt. Diese Sollte folgende eigenschaften Beinhalten:
- Name Als String
- PosX als int
- PosY als int
- Width als int
- Height als int
- WalkAlgo als List<Point>
- NowPoint als int
VB.NET-Quellcode
- Dim npc As New NPC
- ' WICHTIG DIE LISTE IN DER KLASSE HIER INITIALISIEREN
- npc.WalkAlgo = New List(Of Point)
- npc.Texture = My.Resources.Bunny
- npc.Name = "Test NPC"
- npc.StartX = 150
- npc.StyrtY = 250
- npc.Width = 64
- npc.Height = 64
- ' Hoch 50 Schritte
- npc.WalkAlgo.Add(New Point(npc.StartX, npc.StyrtY))
- For ig = 0 To 50
- npc.WalkAlgo.Add(New Point(npc.StartX, npc.StyrtY + ig))
- Next
- ' New X Und Y
- Dim nX1 As Integer = npc.WalkAlgo.Item(npc.WalkAlgo.Count - 1).X
- Dim ny1 As Integer = npc.WalkAlgo.Item(npc.WalkAlgo.Count - 1).Y
- ' Rechts 50 Schritte
- For ir = 0 To 50
- npc.WalkAlgo.Add(New Point(nX1 + ir, ny1))
- Next
- ' New X und Y
- Dim nX2 As Integer = npc.WalkAlgo.Item(npc.WalkAlgo.Count - 1).X
- Dim ny2 As Integer = npc.WalkAlgo.Item(npc.WalkAlgo.Count - 1).Y
- ' Nach unten 50 Schritte
- For iu = 0 To 50
- npc.WalkAlgo.Add(New Point(nX2, ny2 - iu))
- Next
- ' New X und Y
- Dim nX3 As Integer = npc.WalkAlgo.Item(npc.WalkAlgo.Count - 1).X
- Dim ny3 As Integer = npc.WalkAlgo.Item(npc.WalkAlgo.Count - 1).Y
- ' Nach Links 50 Schrítte
- For il = 0 To 50
- npc.WalkAlgo.Add(New Point(nX3 - il, ny3))
- Next
- npcs.add(npc)
So nun fügen wir der List<NPC> einen npc anhand des Beispieles hinzu. Haben wir dies gemacht sollten wir in unserem Timer oder Gameloop einen neuen Thread Starten der den npc im Algorhytmus erhöht.
C#-Quellcode
- public static void walk_npc()
- {
- // jeden NPC durchlaufen
- foreach (NPC item in Declaration.npcs)
- {
- // Den Point des erhöhen
- item.NowPoint += 1;
- // Wenn der Point größer als alle Points im Algorythuss ist soll er auf 0 gesetzt werden um den Algorythus neu zu Starten
- if (item.NowPoint >= item.WalkAlgo.Count) item.NowPoint = 0;
- }
- }
So nun Fügen wir in unserem Paint event den Code hinzu der den NPC Zeichnet.
wie wir Sehen wird jeder NPC an der NowPoint Stelle gezeichnet. So nun wenn wir aber die Welt versetzen müssen wir auch den NPC um den Offsetwert versetzen.
Ich hoffe ich habe es verständlich rüber gebracht, grüße Andy[/quote]