2D Jump and Rund Wie fall gravity?
- VB.NET
Sie verwenden einen veralteten Browser (%browser%) mit Sicherheitsschwachstellen und können nicht alle Funktionen dieser Webseite nutzen.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Es gibt 12 Antworten in diesem Thema. Der letzte Beitrag () ist von Gelöschter Benutzer.
-
-
In meinem aktuell Spiel (3D) nutze ich folgendes:
Kann man garantiert noch verbessern, aber hey, es geht
Position:
-
-
Du erstellst erstma die Geschwindigkeits-Vektoren.
Dann die Gravitation erzeugen:
Und die neuen Positionen bestimmen:
Was du nutzt (Point2D oder Vektor2D ist egal) -
-
-
-
-
-
-
Kein C&P
VB.NET-Quellcode
- Public Class Player
- Public Property Acceleration As Vector2
- Public Property Position As PointF
- End Class
- Public Struct Vector2
- Public Property Single X
- Public Property Single Y
- End Struct
- Private Sub Update()
- HandleInput()
- Gravity()
- Move()
- End Sub
- Private Sub HandleInput()
- ' Wenn Taste D gedrückt:
- Player.Acceleration.X = 1
- ' Wenn A gedrückt:
- Player.Acceleration.X = -1
- ' Wenn Leertaste einmalig gedrückt:
- Player.Acceleration.Y = 1
- End Sub
- Private Sub Gravity()
- Player.Acceleration -= 9.81f * .005f
- End Sub
- Private Sub Move()
- Player.Position.X += Player.Acceleration.X
- Player.Position.Y += Player.Acceleration.Y
- ' Hier auch Kollision überprüfen!
- End Sub
Wenn von "Player" gesprochen wird, bitte immer die Instanz von der Klasse Player nutzen.
Und Update() dann immer aus einem Thread aufrufen. -
Ich glaub ich bin zu dumm^^ ich versteh das nicht...
hier mal mein Code...Bitte helft mir xD^^
VB.NET-Quellcode
- Public Class GamePlayer
- Inherits GameComponent
- WithEvents Form As Form = Form1
- Sub New(ByVal Position As Point, ByVal Type As GameComponentType, ByVal Map As GameMap, ByVal Sprite As Bitmap)
- MyBase.New(Position, Type, Map, Sprite)
- End Sub
- Private Sub Form_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Form.KeyDown
- Dim iCol As Boolean = False
- For i = 0 To Map.Components.Count - 1
- Dim ComponentPosition = Map.Components(i).Position
- Dim ComponentRect As New Rectangle(ComponentPosition.X, ComponentPosition.Y, Map.TileSize.Width, Map.TileSize.Height)
- Dim MyRectangle As New Rectangle(Me.Position.X, Me.Position.Y, Map.TileSize.Width, Map.TileSize.Width)
- Select Case e.KeyCode
- Case Keys.Right
- If ComponentRect.Top = MyRectangle.Top And ComponentRect.Left = MyRectangle.Right Then
- iCol = True
- Exit For
- End If
- Case Keys.Left
- If ComponentRect.Top = MyRectangle.Top And ComponentRect.Right = MyRectangle.Left Then
- iCol = True
- Exit For
- End If
- Case Keys.Up
- If ComponentRect.Left = MyRectangle.Left And ComponentRect.Bottom = MyRectangle.Top Then
- iCol = True
- Exit For
- End If
- End Select
- Next
- If iCol = False Then
- Select Case e.KeyCode
- Case Keys.Up
- Me.Position = New Point(Me.Position.X, Me.Position.Y - Map.TileSize.Height)
- Case Keys.Left
- Me.Position = New Point(Me.Position.X - Map.TileSize.Width, Me.Position.Y)
- Case Keys.Right
- Me.Position = New Point(Me.Position.X + Map.TileSize.Width, Me.Position.Y)
- End Select
- End If
- End Sub
- End Class
-
-
Ähnliche Themen
-
GirlOnFire - - Multimedia- und Spieleprogrammierung
-
2 Benutzer haben hier geschrieben
- Gast (12)
- thefiloe (1)