Rilevare nuove coordinate di oggetti

di il
8 risposte

Rilevare nuove coordinate di oggetti

Salve (programmo da poco)
(grafica 2d dall'alto)
Sto facendo un gioco dove all'interno c'è un omino (quello che andrò a controllare) e degli edifici.
La mappa è più grande del form quindi quando l'omino si sposta oltre una certa coordinata si muove anche la mappa (e con sé gli edifici)
Ovviamente quando l'omino va contro un edificio, esso si fermerà e per fare questo ho scritto:
If omino.Top + 12 > y(t) And omino.Top - 1 < y1(t) And omino.Left + 12 > x(t) And omino.Left < x1(t) Then ' contatto da sopra
ominogiu = False
ominosu = True
End If

(questo è il comando per far muovere l'omino verso il basso) (y, y1, x, x1 sono le grandezze di ogni edificio)

questa cosa funziona solo quando la mappa non si è mossa ma appena si muove, le coordinate degli edifici non si aggiornano, quindi quando si va contro un edificio mosso, l'omino non si ferma, invece si ferma in punti dove non c'è più niente (quelli occupati precedentemente dagli edifici mossi)

grazie.

8 Risposte

  • Re: Rilevare nuove coordinate di oggetti

    Non capisco, la mappa si muove perché sei tu che la fai muovere e quindi dovresti conoscere gli spostamenti
  • Re: Rilevare nuove coordinate di oggetti

    In che senso "conoscere gli spostamenti"?
    quando l'omino supera la metà del form, la mappa scorre verso l'alto
  • Re: Rilevare nuove coordinate di oggetti

    anonimo ha scritto:


    In che senso "conoscere gli spostamenti"?
    quando l'omino supera la metà del form, la mappa scorre verso l'alto
    Ma scorre da sola, oppure è del codice che hai scritto tu che la fa scorrere ??
  • Re: Rilevare nuove coordinate di oggetti

    anonimo ha scritto:


    In che senso "conoscere gli spostamenti"?
    A mio avviso, nella tua implementazione dovresti scindere le due parti, quella di rappresentazione logica degli elementi del gioco, ossia l'omino, gli edifici, la mappa intera, ecc. da quella che è la rappresentazione grafica degli stessi, che invece magari deve tenere conto di altri fattori per posizionare correttamente gli attori all'interno dello scenario di gioco.

    Riassumendo, se l'omino è a contatto o meno con un edificio in uno dei suoi possibili lati di spostamento, dovresti rilevarlo sulla tua "mappa virtuale" completa; quando invece vai a visualizzare questa mappa, la centratura della scena o della posizione di gioco dovrebbe essere adeguata ai criteri che ti sei posto, ma eviterei di fondere le due cose, ossia - per esemplificare - di determinare le collisioni tenendo conto della posizione degli elementi incorporando anche i concetti di centratura, spostamenti relativi per la visualizzazione e quant'altro, altrimenti non ne esci.

    Per il resto, riguardo il tuo problema non si può affermare altro che la logica (non riportata) di determinazione delle posizioni è sbagliata. Punto.
  • Re: Rilevare nuove coordinate di oggetti

    anonimo ha scritto:


    In che senso "conoscere gli spostamenti"?
    quando l'omino supera la metà del form, la mappa scorre verso l'alto
    dai l'impressione di lavorare su un codice non tuo
  • Re: Rilevare nuove coordinate di oggetti

    Semplicemente non ci metto mano da molto tempo... cmq ho risolto
    grazie
  • Re: Rilevare nuove coordinate di oggetti

    anonimo ha scritto:


    Semplicemente non ci metto mano da molto tempo... cmq ho risolto
    Per buona prassi di partecipazione ai forum, in genere quando si risolve si indica qual era il problema e la relativa soluzione a cui si è giunti, giusto per dare un senso all'intera discussione e non renderla "lettera morta" ma qualcosa che possa essere d'aiuto anche ad altri.
  • Re: Rilevare nuove coordinate di oggetti

    Hai ragione, scusate

    si verificava quel problema perché semplicemente leggeva la subrutine delle coordinate degli oggetti solo all'inizio del programma quindi quando si spostavano lui "non lo sapeva"

    quindi è bastato richiamare quella subrutine ogni volta che l'omino si spostava utilizzando il comando call
Devi accedere o registrarti per scrivere nel forum
8 risposte