| 
 | |||||||
| 
 | 
|  | 
|  | 
|  | Strumenti | 
|  08-07-2011, 10:16 | #1 | 
| Junior Member Iscritto dal: Apr 2008 
					Messaggi: 4
				 | 
				
				[c++] Gaming: trasparenza e "salto".
			 
		Salve a tutti, sono alle prese col creare un videogame a tempo perso ( ebbene si, non ho niente da fare ) Prego tutti quelli che risponderanno di non trattarmi male per le domande ( eventualmente ) troppo stupide   <<-- Sto avendo problemi nel -->> Far saltare il personaggio: Usando la piu semplificata forma " if (key[KEY_UP]) y=y-2; if (y<=0) y=0; " Per far salire in alto l'oggetto pensavo di modificare la riga con: 1- Per renderlo un salto farlo arrivare a un definito pixel per poi farlo riscendere tornando alle coordinate del suolo ( pensavo con un while che quando si rompe entra nella fase discesa,come realizzarlo in scrittura corretta? ) 2- E, quando trovo un oggetto fermo nella mappa, dove devo inserire che nella discesa del salto ci si fermi sopra? , nell'istruzione da movimento o da altre parti? Scrittura corretta? ( Pensavo a qualcosa del genere si ferma sulle cordinate del bordo dell'oggetto fisso +1 ) Secondo argomento: 1- Ho creato un campione base di personaggio ma ho riscontrato un problema: usando paint per crearlo, intorno ad esso rimane la bordatura del foglio, come faccio ad eliminarla? o al massimo, come rendo trasparente il bordo del personaggio? cè un colore apposta ? Grazie mille per le eventuali risposte e scusate la grammatica ho tanto,troppo sonno. EDIT: uso libreria api ALLEGRO.H Enjoy!   | 
|   |   | 
|  08-07-2011, 10:31 | #2 | |
| Senior Member Iscritto dal: Oct 2007 Città: Padova 
					Messaggi: 4131
				 | 
		Ciao, posso aiutarti con questo: Quote: 
 Mi pare che con paint (MS Paint) non puoi farlo. Io ti consiglio di usare questo programma, per disegnare le tue sprite: Paint.NET. E' molto semplice da usare. 
				__________________ As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) | |
|   |   | 
|  08-07-2011, 10:38 | #3 | 
| Senior Member Iscritto dal: Nov 2005 
					Messaggi: 2777
				 | 
		Premettendo che non sono un esperto provo a dirti le idee che mi vengono in mente. Per il salto proverei a dare una velocità iniziale verso l'alto al personaggio (solo se in quel momento è a terra) e gli abbinerei una accelerazione verso il basso che permane finché il personaggio è in aria (settando magari una velocità verso il basso di soglia oltre la quale non si può andare). Per fermarlo quando giunge su una piattaforma dovresti gestire la collisione con la piattaforma stessa. Personalmente gestirei movimento e collisione in due punti diversi, per chiarezza. Per la trasparenza io uso immagini png create con GIMP. Con paint non puoi gestire la trasparenza. Un'alternativa è scegliere un colore che sarà la trasparenza e al caricamento dell'immagine modificare i pixel di quel colore con dei pixel trasparenti. EDIT: dopo aver letto il post di Angel): in effetti l'accelerazione verso il basso deve permanere sempre, in modo da cadere quando vai oltre una piattaforma (anche senza saltare). Eviti la compenetrazione tra personaggio e suolo gestendo le collisioni. Ultima modifica di wingman87 : 08-07-2011 alle 14:40. | 
|   |   | 
|  08-07-2011, 13:12 | #4 | 
| Senior Member Iscritto dal: May 2006 Città: Salerno 
					Messaggi: 936
				 | 
		Per gestire salti, collisioni, piattaforme, ecc. la cosa migliore sarebbe scriverti un piccolo motore fisico. Setti un'accelerazione costante verso il basso e a ogni frame aggiungi l'accelerazione alla velocità e poi la velocità alle coordinate; quando il personaggio salta, puoi dargli istantaneamente un'alta velocità verso l'alto oppure settare per un istante l'accelerazione verso l'alto. Una base: Codice: float xAccel = 0, yAccel = -1.0,
      xSpeed = 0, ySpeed = 0,
      xPos = 0, yPos = 0;
//poi nel ciclo principale del programma:
xSpeed += xAccel;
ySpeed += yAccel;
xPos += xSpeed;
yPos += ySpeed;
//quando salta
ySpeed += 2.0; //per esempio | 
|   |   | 
|  08-07-2011, 13:34 | #5 | 
| Member Iscritto dal: Sep 2010 
					Messaggi: 102
				 | 
		l'idea di Angel) non è male, occhio però che devi strutturarlo bene e gestirlo al meglio, se ce la fai non avrai più problemi lo fai una volta e sei apposto...
		 | 
|   |   | 
|   | 
| Strumenti | |
| 
 | 
 | 
Tutti gli orari sono GMT +1. Ora sono le: 20:21.









 
		 
		 
		 
		








 
  
 



 
                        
                        










