Salve a tutti gli amici del forum.Vi chiedo un consiglio per migliorare un giochino di calcio in fase di costruzione.
Quando il Player passa la palla, se in quella parte di campo c'è un compagno ,la palla lo raggiunge altrimenti si sposta in base alla direzione stabilita dal Player.Il riconoscimento del giocatore amico lo posso ottenere attraverso due "logiche":
A:il Player crea dei coni d'ombra(oggetti invisibili)che si muovono insieme al player(direction comuni),se cè collisione ...la palla si muoverà verso il nuovo giocatore che acquisisce l'id.
oppure
B:il player crea delle regioni ellittiche e....stesso discorso.
I risultati ottenuti sono appena sufficienti perchè nei passaggi diagonali avvolte capita che la regione o l'ombra si creino prima giù o sù solo dopo una frazione di secondo in diagonale(2 tasti direzione non li premerai mai proprio contemporaneamente...insieme al tasto passaggio).Quella frazione di sec. ,alcune volte, non fa corrispondere il passaggio.
Cosa mi consigliate?Voi utilizzate altre "logiche"?
Infine come si scrive il secondo oggetto più vicino?
Grazie a tutti e scusatemi per il linguaggio poco tecnico......
Questo messaggio è stato modificato: 10-30-2009 11:16 AM da duecalzini.
Il sistema di diffusione collaborativa è un capolavoro ma in questo caso non mi aiuta dato che serve a rintracciare oggetti in una griglia seguendo la strada più breve ,persisterebbe infatti il problema del pallone che, "non ascolta" il player quando si sposta rapidamente in diagonale .Rendo più chiaro il problema allegando la parte di interesse:
...prova a muoverti con i vari giocatori facendo una decina di passaggi ravvicinati ,veloci(magari in diagonale)...e capirai !
Questo messaggio è stato modificato: 10-31-2009 07:59 PM da duecalzini.
Ho notato che l'id del giocatore prescelto per il passaggio è corretto, però sembra che la direzione del pallone a volte prenda i multipli di 45° come se non ci fosse un giocatore prescelto per il passaggio. Questo porta la palla a passare vicino al giocatore che prova a raggiungerla per un attimo, poi lascia stare visto che la palla lo semina.
L'unico problema per me stà nel codice che da la direzione al pallone.
Per ora non ho trovato una soluzione però possiamo vedere di arrivarci.
Altra cosa, quando con il player col pallone corre addosso ad un altro, spesso se la litigano, dovrebbe bastare una condizione in più per l'assimilazione della palla.
Credo che il motivo per il quale la direzione del pallone  prenda multipli di 45°sia dovuto al fatto che quando passi in diagonale l'ellisse si crea prima in basso e solo dopo diagonalmente quando ormai la palla è già partita verso la direzione sbagliata.E' come se invece di premere  TASTO GIU'+TASTO SX+S premessi TASTO GIU'+S e dopo TASTO SX.
Mi piacerebbe vedere un esempio che simula il passaggio di PES o FIFA:
il player passa in un area del campo,se li vicino c'è un compagno il pallone lo raggiunge altrimenti segue il normale percorso fermandosi dopo un pò.
Per quel che riguarda gli altri problemi sono già risolti ...per facilitare la lettura del giochino ho postato solo una piccola parte.
Ti ringrazio per la disponibilità .
Infine se instance_naerest mi trova l'oggetto più vicino come posso dare un comando per individuare il secondo più vicino?Se quest'ultima domanda devo farla in un altra sezione ditemelo subito che cancello e provveddo immediatamente.
Questo messaggio è stato modificato: 11-03-2009 12:35 AM da duecalzini.
Non ho fatto prove ma secondo me ti ho risolto il problema, ti faccio un esempio solo con questo pezzo di codice ma tanto il ragionamento è sempre quello:
Codice:
  if ( keyboard_check(vk_up))
  {xv=view_xview[0]+220;
    yv=view_yview[0]-300;
    endx = pallone.x+100;
    endy = pallone.y;}
questo codice è attivo ogni qual volta si prema la freccetta in alto, che sia "su"-"su/dx"-"su/sx".
Premesso ciò bisogna limitare questo codice in modo che venga letto SOLO con la pressione del tasto "su" mentre le altre frecciette NON devono essere premute.
Codice:
  if keyboard_check(vk_up) && !keyboard_check(vk_left) && !keyboard_check(vk_right) && !keyboard_check(vk_down)
  {xv=view_xview[0]+220;
    yv=view_yview[0]-300;
    endx = pallone.x+100;
    endy = pallone.y;}
Per la domanda della seconda istanza più vicina, così al volo non mi viene una soluzione, non mi sono mai imbattuto nel problema...ci penserò, nel mentre se ti vengono spunti scrivili pure.
Nienta da fare...miglioramento modesto!
Però ho notato che release S-key in pallone è inutile e ,sostituendo press-S key con release-S key il player non sbaglia un colpo...tuttavia si ha un effetto di risposta rallentata...ma per ora va bene cosi'.
Ultimo quesito :come mai se due compagni sono dentro l'ellisse il player passa sempre verso il più lontano ? come posso ottenere il contrario?Grazie ancora Freeflip.
Questo messaggio è stato modificato: 11-03-2009 04:05 PM da duecalzini.