视觉基本游戏玩家不会移动

时间:2015-05-04 21:34:38

标签: vb.net visual-studio

对于一个学校项目我正在制作一个简单的游戏,僵尸直接向下走,试图攻击玩家基地(它有点像太空入侵者和行星与僵尸)。但是当我尝试玩游戏时,当我按D或A时,我的播放器已停止移动。我会发布我的代码。有人可以让我的球员一边走动吗?。

Public Class Form2
Dim Player_Health As Integer = 10
Dim Player_Max_Health As Integer = 100
Dim Player_X_Speed_Moving As Integer = 0
Dim Player_Potential_X_Speed As Integer = 10

Private Sub Form2_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
    If e.KeyCode = Keys.A Then
        Player_X_Speed_Moving = -Player_Potential_X_Speed
    End If
    If e.KeyCode = Keys.D Then
        Player_X_Speed_Moving = Player_Potential_X_Speed
    End If
End Sub

Private Sub Form2_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyUp
    If e.KeyCode = Keys.A Then
        Player_X_Speed_Moving = 0
    End If
    If e.KeyCode = Keys.D Then
        Player_X_Speed_Moving = 0
    End If
End Sub
Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Dim bmp As Bitmap = Bitmap.FromFile("C:\Users\Kevin Welch\Documents\Visual Studio 2010\Projects\Zom-b\Zom-b\My Project\Res\Spr\Player1.bmp")
    bmp.MakeTransparent(Color.White) ' magenta in bitmap will be transparent
    PictureBox1.Image = bmp
    Timer1.Enabled = True

End Sub

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    Call MovePlayer()
End Sub
Private Sub MovePlayer()
    PictureBox1.Left += Player_X_Speed_Moving
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Form1.Show()
    Me.Hide()
End Sub

结束班

1 个答案:

答案 0 :(得分:0)

我的猜测是表单的消息队列正在使用按键事件进行备份,而您的Tick事件无法跟上。大多数窗口UI系统使用单个线程来响应泵送到它们的消息,例如按键/向下键,鼠标移动和点击。如果UI线程忙,则Tick事件必须等待,因为它在同一个线程上运行。许多游戏都有一个游戏循环来处理窗口事件以及处理游戏逻辑和图形渲染。我建议使用XNA Framework,因为它可以为你处理大部分内容。