Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2015
    Messaggi
    5

    Creare un "muro" (VB2010)

    Ciao a tutti
    Vorrei un consiglio su un problema
    Ho una picturebox che mi serve come "player", che tramite questo codice la faccio muovere:

    Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As IntPtr) As Short

    Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As EventArgs) Handles Timer1.Tick
    If GetKeyState(87) < 0 OrElse GetKeyState(38) < 0 Then
    PBPlayer1.Top -= 3
    ElseIf GetKeyState(65) < 0 OrElse GetKeyState(37) < 0 Then
    PBPlayer1.Left -= 3
    ElseIf GetKeyState(68) < 0 OrElse GetKeyState(39) < 0 Then
    PBPlayer1.Left += 3
    ElseIf GetKeyState(83) < 0 OrElse GetKeyState(40) < 0 Then
    PBPlayer1.Top += 3
    End If

    l'unico problema è che voglio creare dei "muri" che la picurebox non può attraversare, ho provato vari metodi ma nessuno di questi risolveva completamente il mio problema.

    Grazie in anticipo

  2. #2
    Mah, nel caso ad esempio del Top non basterebbe un:
    codice:
    If GetKeyState(87) < 0 OrElse GetKeyState(38) < 0 Then
       If PBPlayer1.Top > Muro.Bottom then
          PBPlayer1.Top -= 3 'eventualmente affinando a 2 o 1 se con un 3 va "sotto"
       End If
    ElseIf GetKeyState(65) < 0..............


  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2015
    Messaggi
    5
    Quote Originariamente inviata da eziogsv Visualizza il messaggio
    Mah, nel caso ad esempio del Top non basterebbe un:
    codice:
    If GetKeyState(87) < 0 OrElse GetKeyState(38) < 0 Then
       If PBPlayer1.Top > Muro.Bottom then
          PBPlayer1.Top -= 3 'eventualmente affinando a 2 o 1 se con un 3 va "sotto"
       End If
    ElseIf GetKeyState(65) < 0..............

    Ho provato questo metodo ma essendo un quadrato il "muro", il player non può girarci intorno.
    Altri suggerimenti?

  4. #4
    Non è chiaro per quale motivo il player "NON PUO' " girarci intorno. Puoi spiegare meglio cosa è questo muro, dimensioni e dove è posizionato?

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2015
    Messaggi
    5
    Quote Originariamente inviata da eziogsv Visualizza il messaggio
    Non è chiaro per quale motivo il player "NON PUO' " girarci intorno. Puoi spiegare meglio cosa è questo muro, dimensioni e dove è posizionato?
    In questa immagine puoi vedere un pezzo. Lo sprite deve fare per esempio questo tragitto senza attraversare i muri.BPhtml.jpg

  6. #6
    Capito. Prova con Control.GetChildAtPoint

    https://msdn.microsoft.com/en-us/lib...v=vs.100).aspx

    Se devi salire verifica che controllo c' è qualche pixel sopra ad un punto del tuo Top (es. qualche pixel sopra al punto mediano) e così via per gli altri lati. Se il controllo è un muro non ti muovi in quella direzione.

  7. #7
    SOSTITUISCE IL MESSAGGIO SOPRA

    Capito. Prova con Control.GetChildAtPoint

    https://msdn.microsoft.com/en-us/lib...v=vs.100).aspx

    Se devi salire controlla che controllo c' è qualche pixel sopra ai due vertici superiori della PictureBox e così via per gli altri lati. Se il controllo è un muro non ti muovi in quella direzione.

    Questo sistema dovrebbe funzionare anche con 300 muri messi "random".

    Se i muri sono invece pochi e messi lineari come in immagine potresti cavartela con un "Select Case PBPlayer.Left" per andare su e giù e "Select Case PBPlayer.Top" per andare a destra e sinistra.

    Ad esempio nella immagine puoi salire e scendere solo se Left=0 o Left=Muro1.Right+1 o Left= Muro2.Right +1

    Ciao!
    Ultima modifica di eziogsv; 10-02-2016 a 22:39

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.