Siemka mam 2 problemy można powiedzieć ze jestem początkującym w programowaniu obiektowym a wiec proszę o wyjaśnienie jak najprościej ;d
rozwiązany !
Spoiler
1) zderzenia obiektów mi działają tylko na 1 obiekcie ściany pozostałe się rysują prawidłowo lecz nie zatrzymują postaci gracza.
klasa
Public Class sciana
Dim Texture As Texture2D
Dim Rectangle_s As Microsoft.Xna.Framework.Rectangle
Public Sub New(ByVal Texture2 As Texture2D, ByVal Rectangle2 As Microsoft.Xna.Framework.Rectangle)
Texture = Texture2
Rectangle_s = Rectangle2
End Sub
Public Sub Draw(ByRef SpriteBatch As SpriteBatch)
SpriteBatch.Draw(Texture, Rectangle_s, Microsoft.Xna.Framework.Color.White)
End Sub
Public Sub zderzenia(ByRef rec As Microsoft.Xna.Framework.Rectangle, ByRef rec2 As Microsoft.Xna.Framework.Rectangle)
If Rectangle_s.Intersects(rec2) Then
rec2 = rec
Else
rec = rec2
End If
End Sub
End Class
LoadContent()
sciany = New List(Of sciana)
Dim a As sciana = New sciana(sciany_tex, New Rectangle(100, 100, 64, 64))
sciany.Add(a)
Dim b As sciana = New sciana(sciany_tex, New Rectangle(164, 100, 64, 64))
sciany.Add(b)
Dim c As sciana = New sciana(sciany_tex, New Rectangle(228, 100, 64, 64))
sciany.Add(c)
Update()
If (Keyboard.GetState().IsKeyDown(Keys.D)) Then
prostakat3.X += 3
End If
If (Keyboard.GetState().IsKeyDown(Keys.A)) Then
prostakat3.X -= 3
End If
If (Keyboard.GetState().IsKeyDown(Keys.S)) Then
prostakat3.Y += 3
End If
If (Keyboard.GetState().IsKeyDown(Keys.W)) Then
prostakat3.Y -= 3
End If
For Each sciana In sciany
sciana.zderzenia(prostakat, prostakat3)
Next
prostakat - obecne położenie gracza
prostakat3 - pozycja gracza po wykonaniu ruchu
Jeśli prostakat3 nie zachodzi na żadna ścianę to jego wartość otrzymuje pozycja gracza (prostokat) Jeśli zachodzi na ścianę otrzymuje swoją poprzednią pozycje (pozycje gracza). Ale nie wiem dlaczego działa to tylko przy pierwszej ścianie (100, 100, 64, 64) reszta ma pozycja gracza w dupie ;d
2) Mam pomysł ale nie mam dobrego optymalnego rozwiązania. Chciał bym zrobić światło tak jak w
poprzedniej wersji mojej gry ale tym razem chciał bym aby było okrągłe oraz zatrzymywało się na ścianach nie mam pomysłu jak to sprawdzać i jak ograniczać obszar widoczności.