3D compatibile con Head Eye mouse
3D compatibile con Head Eye mouse
Salve a tutti,
ho iniziato da poco a programmare con GM.
Ho la versione registrata GM7,
sto seguendo il "Game Maker Tutorial A First Person Shooter Written by Mark Overmars"
e mi chiedevo se è possibile muovere la camera
con il muose, ovvero la direzione del movimento è controllata dalla posizione del mouse sullo schermo, esempio: mouse sul bordo superiore = avanti; mouse sul bordo destro = ruota a destra ecc...;
questo perchè desidero creare un semplice software compatibile con gli Head Eye mouse
grazie
Gius
ho iniziato da poco a programmare con GM.
Ho la versione registrata GM7,
sto seguendo il "Game Maker Tutorial A First Person Shooter Written by Mark Overmars"
e mi chiedevo se è possibile muovere la camera
con il muose, ovvero la direzione del movimento è controllata dalla posizione del mouse sullo schermo, esempio: mouse sul bordo superiore = avanti; mouse sul bordo destro = ruota a destra ecc...;
questo perchè desidero creare un semplice software compatibile con gli Head Eye mouse
grazie
Gius
- maz85
- Admin
- Messaggi: 8287
- Iscritto il: 07/02/2004, 15:57
- Specialità: Nientologo
- Località: Oblio
- Contatta:
Re: 3D compatibile con Head Eye mouse
Mi stai parlando di bordi e non di mouselook quindi puoi creare una 'zona sensibile' per il mouse.
Essendo che la 'vista 3d' è la grandezza della stanza (o della vista) mettiamo un bordo di 20 pixel sotto controllo:
se mouse_x < 20 (pixel) -> rotazione a sinistra
se mouse_x > grandezzaorizzontalevista-20 -> rotazione a destra
se mouse_y< 20 -> rotazione verticale verso l'alto
se mouse_y> grandezzaverticalevista-20 -> rotazione verticale verso il basso
Così si includono anche le zone a doppio controllo (quelle di sovrapposizione tra i due controlli) in cui per esempio puntando nell'angolo sinistro-alto la telecamera si ruoterà verso sinistra e verso l'alto.
Essendo che la 'vista 3d' è la grandezza della stanza (o della vista) mettiamo un bordo di 20 pixel sotto controllo:
se mouse_x < 20 (pixel) -> rotazione a sinistra
se mouse_x > grandezzaorizzontalevista-20 -> rotazione a destra
se mouse_y< 20 -> rotazione verticale verso l'alto
se mouse_y> grandezzaverticalevista-20 -> rotazione verticale verso il basso
Così si includono anche le zone a doppio controllo (quelle di sovrapposizione tra i due controlli) in cui per esempio puntando nell'angolo sinistro-alto la telecamera si ruoterà verso sinistra e verso l'alto.
Votate GmItalia nella classifica!
Ultime dal fronte.... notizie e altro sul sito di GmItalia
°Pagina personale: % di sviluppo giochi e altro°
Ultime dal fronte.... notizie e altro sul sito di GmItalia
°Pagina personale: % di sviluppo giochi e altro°
Re: 3D compatibile con Head Eye mouse
Grazie maz85 per la tua utile risposta.
Nel tradurre il tuo concetto, noto le mie fragili basi di programmazione.
Con gli esempi .gm che si possono trovare nel
"Game Maker Tutorial A First Person Shooter Written by Mark Overmars"
deduco che bisognerà inserire il tutto in CREATE in obj_player, mi sbaglio?
poi credo che il primo script possa essere:
{
if (mouse_x < 20)
{direction += 3;} //rotazione a sinistra
}
ma francamente gli altri non riesco a desumerli,
potresti gentilmente aiutarmi a capire?
davvero grazie
Nel tradurre il tuo concetto, noto le mie fragili basi di programmazione.
Con gli esempi .gm che si possono trovare nel
"Game Maker Tutorial A First Person Shooter Written by Mark Overmars"
deduco che bisognerà inserire il tutto in CREATE in obj_player, mi sbaglio?
poi credo che il primo script possa essere:
{
if (mouse_x < 20)
{direction += 3;} //rotazione a sinistra
}
ma francamente gli altri non riesco a desumerli,
potresti gentilmente aiutarmi a capire?
davvero grazie
- maz85
- Admin
- Messaggi: 8287
- Iscritto il: 07/02/2004, 15:57
- Specialità: Nientologo
- Località: Oblio
- Contatta:
Re: 3D compatibile con Head Eye mouse
Se li metti nel create quei controlli verranno eseguiti solo alla creazione dell'oggetto, quindi mettili su Step. Per il controllo è giusto quello che hai fatto, adesso ti mancano solo gli altri che puoi desumere da quel che ti ho scritto: grandezzaverticalevista e grandezzaorizzontalevista sono in pratica le dimensioni della stanza, se 640 è la grandezza orizzontale e il bordo scelto è 20 pixel ne dedurrà che se mouse_x è maggiore di 620 allora direzione->sinistra.
Votate GmItalia nella classifica!
Ultime dal fronte.... notizie e altro sul sito di GmItalia
°Pagina personale: % di sviluppo giochi e altro°
Ultime dal fronte.... notizie e altro sul sito di GmItalia
°Pagina personale: % di sviluppo giochi e altro°
Re: 3D compatibile con Head Eye mouse
Ancora grazie maz85 per la tua risposta.
Se credo di aver capito nell'obj_player
dopo CREATE devo inserire STEP, corretto?
dopo inserisco lo script
{
if (mouse_x < 20)
{direction += 3;} //rotazione a sinistra
if (mouse_x > 620)
{direction -= 3;} //rotazione a destra
if (mouse_y > 420) // indietro
{ var maxspeed;
maxspeed = 3 else maxspeed = 1.5;
if (speed > -maxspeed) speed = max(-maxspeed,speed-0.4);
}
if (mouse_y < 20) // avanti
{ var maxspeed;
maxspeed = 3 else maxspeed = 1.5;
if (speed < maxspeed ) speed = min(maxspeed ,speed+0.4);
}
dovrebbe essere corretto?
ancora grazie
Se credo di aver capito nell'obj_player
dopo CREATE devo inserire STEP, corretto?
dopo inserisco lo script
{
if (mouse_x < 20)
{direction += 3;} //rotazione a sinistra
if (mouse_x > 620)
{direction -= 3;} //rotazione a destra
if (mouse_y > 420) // indietro
{ var maxspeed;
maxspeed = 3 else maxspeed = 1.5;
if (speed > -maxspeed) speed = max(-maxspeed,speed-0.4);
}
if (mouse_y < 20) // avanti
{ var maxspeed;
maxspeed = 3 else maxspeed = 1.5;
if (speed < maxspeed ) speed = min(maxspeed ,speed+0.4);
}
dovrebbe essere corretto?
ancora grazie
Re: 3D compatibile con Head Eye mouse
Scusate ma era errata la precedente ipotesi,
quella corretta che funziona è la seguente:
STEP
{
if (mouse_x < 60)
{direction += 3;} //rotazione a sinistra
if (mouse_x > 580)
{direction -= 3;} //rotazione a destra
if (mouse_y > 380) // indietro
{ var maxspeed;
if keyboard_check(vk_shift) maxspeed = 3 else maxspeed = 1.5;
if (speed > -maxspeed) speed = max(-maxspeed,speed-0.4);
}
if (mouse_y < 60) // avanti
{ var maxspeed;
if keyboard_check(vk_shift) maxspeed = 3 else maxspeed = 1.5;
if (speed < maxspeed ) speed = min(maxspeed ,speed+0.4);
}
}
desideravo domandare gentilmente come posso di un oggetto
appena si avvia il gioco, a random far scegliere una posizione tra (x1,y1) (x2,y2) (x3,y3)
e scegliere, sempre a random, tra 3 sprite differenti?
ancora grazie
quella corretta che funziona è la seguente:
STEP
{
if (mouse_x < 60)
{direction += 3;} //rotazione a sinistra
if (mouse_x > 580)
{direction -= 3;} //rotazione a destra
if (mouse_y > 380) // indietro
{ var maxspeed;
if keyboard_check(vk_shift) maxspeed = 3 else maxspeed = 1.5;
if (speed > -maxspeed) speed = max(-maxspeed,speed-0.4);
}
if (mouse_y < 60) // avanti
{ var maxspeed;
if keyboard_check(vk_shift) maxspeed = 3 else maxspeed = 1.5;
if (speed < maxspeed ) speed = min(maxspeed ,speed+0.4);
}
}
desideravo domandare gentilmente come posso di un oggetto
appena si avvia il gioco, a random far scegliere una posizione tra (x1,y1) (x2,y2) (x3,y3)
e scegliere, sempre a random, tra 3 sprite differenti?
ancora grazie
- maz85
- Admin
- Messaggi: 8287
- Iscritto il: 07/02/2004, 15:57
- Specialità: Nientologo
- Località: Oblio
- Contatta:
Re: 3D compatibile con Head Eye mouse
Si, i controlli effettuati sono corretti (invece di un bordo di 20 hai messo 60 ok).
Riguardo le funzioni random cerca sul forum o sul manuale.
Hai a disposizione sia le funzioni tipiche sia la funzione choose().
Riguardo le funzioni random cerca sul forum o sul manuale.
Hai a disposizione sia le funzioni tipiche sia la funzione choose().
Votate GmItalia nella classifica!
Ultime dal fronte.... notizie e altro sul sito di GmItalia
°Pagina personale: % di sviluppo giochi e altro°
Ultime dal fronte.... notizie e altro sul sito di GmItalia
°Pagina personale: % di sviluppo giochi e altro°
Re: 3D compatibile con Head Eye mouse
Io posso aver capito bene facendo così:
obj_plant1 - CREATE -
{choose(obj_plant1.x = 200, obj_plant1.x = 100,obj_plant1.x = 300);}
ma non cambia la posizione.
Ma desidero che scelga tra (x,y) e non solo x....
Dove sbaglio?
grazie ancora
obj_plant1 - CREATE -
{choose(obj_plant1.x = 200, obj_plant1.x = 100,obj_plant1.x = 300);}
ma non cambia la posizione.
Ma desidero che scelga tra (x,y) e non solo x....
Dove sbaglio?
grazie ancora
- maz85
- Admin
- Messaggi: 8287
- Iscritto il: 07/02/2004, 15:57
- Specialità: Nientologo
- Località: Oblio
- Contatta:
Re: 3D compatibile con Head Eye mouse
Beh, choose accetta come argomenti dei valori non delle porzioni di codice (in questo caso assegnazioni).
Guarda qui: http://gmitalia.altervista.org/gmi_foru ... lit=random
Esempio:
oppure
Guarda qui: http://gmitalia.altervista.org/gmi_foru ... lit=random
Esempio:
Codice: Seleziona tutto
valoretraquesti=choose(100,200,300);
Codice: Seleziona tutto
numerocasuale=round(random(4));
switch numerocasuale{
case 0: ox=100; oy=200;... break;
case 1: ......................break;
ecc...
}
Votate GmItalia nella classifica!
Ultime dal fronte.... notizie e altro sul sito di GmItalia
°Pagina personale: % di sviluppo giochi e altro°
Ultime dal fronte.... notizie e altro sul sito di GmItalia
°Pagina personale: % di sviluppo giochi e altro°
- BaronVsCorsar
- GMI VIP
- Messaggi: 4699
- Iscritto il: 14/02/2004, 12:05
- Specialità: Saccenza
- Uso: GameMaker 8.1
- Località: Ferrara
- Contatta:
Re: 3D compatibile con Head Eye mouse
basta assegnazioni come parametri di funzione, vi prego...
risultato= choose(a,b,c,);
assegna a risultato uno dei tra parametri che tu gli indichi, scelto a caso. Mai puoi fare un assegnamento in un parametro!
Il codice che ti serve deve fare:
Codice: Seleziona tutto
plant1.x= choose(valore_a,valore_a,valore_a);
plant1.y= choose(valore1,valore2,valore3);
Buon lavoro!
buon lavoro!
Schiva questo - http:\\baronvscorsar.altervista.org
by Lego: Vado in un bar e faccio "votiamo che quel tizio la in fondo venga buttato fuori", ma perché?
by Lego: Vado in un bar e faccio "votiamo che quel tizio la in fondo venga buttato fuori", ma perché?
- Homunculus
- Admin
- Messaggi: 6840
- Iscritto il: 25/11/2007, 20:36
- Contatta:
Re: 3D compatibile con Head Eye mouse
Non èmolto chiaro cosa vuoi fare con quel codice, choose da uno degli elementi che gli passi a caso, ma te passi cose tipo object.x = 300 ecc... non dei valori.
Penso che quello che cerchi di fare sia una cosa simile:
object.x = choose(100,200,300);
Penso che quello che cerchi di fare sia una cosa simile:
object.x = choose(100,200,300);
- BaronVsCorsar
- GMI VIP
- Messaggi: 4699
- Iscritto il: 14/02/2004, 12:05
- Specialità: Saccenza
- Uso: GameMaker 8.1
- Località: Ferrara
- Contatta:
Re: 3D compatibile con Head Eye mouse
oops, mi son accorto un dettaglio nel codice proposto da maz:
poichè random restituisce un numero >=0 e <di 4 ( cioè l'intervallo matematico [0;4[ ) per avere una distribuzione uniforme dei risultati è più semplice fare:
floor(random(4))
con round si avrebbe:
0 nell'intervallo [0 ; 0.5[ (vado a memoria, mi pare che x.5 sia roundato come x+1)
1 nell'intervallo [0.5; 1.5[
2 nell'intervallo [1.5; 2.5[
3 nell'intervallo [2.5; 3.5[
4 nell'intervallo [3.5; 4[
in altre parole non sarebbe una distribuzione uniforme...
Codice: Seleziona tutto
numerocasuale=round(random(4));
switch numerocasuale{
case 0: ox=100; oy=200;... break;
case 1: ......................break;
ecc...
}
floor(random(4))
con round si avrebbe:
0 nell'intervallo [0 ; 0.5[ (vado a memoria, mi pare che x.5 sia roundato come x+1)
1 nell'intervallo [0.5; 1.5[
2 nell'intervallo [1.5; 2.5[
3 nell'intervallo [2.5; 3.5[
4 nell'intervallo [3.5; 4[
in altre parole non sarebbe una distribuzione uniforme...
Schiva questo - http:\\baronvscorsar.altervista.org
by Lego: Vado in un bar e faccio "votiamo che quel tizio la in fondo venga buttato fuori", ma perché?
by Lego: Vado in un bar e faccio "votiamo che quel tizio la in fondo venga buttato fuori", ma perché?
- maz85
- Admin
- Messaggi: 8287
- Iscritto il: 07/02/2004, 15:57
- Specialità: Nientologo
- Località: Oblio
- Contatta:
Re: 3D compatibile con Head Eye mouse
Più che giusto Baron
Votate GmItalia nella classifica!
Ultime dal fronte.... notizie e altro sul sito di GmItalia
°Pagina personale: % di sviluppo giochi e altro°
Ultime dal fronte.... notizie e altro sul sito di GmItalia
°Pagina personale: % di sviluppo giochi e altro°
Re: 3D compatibile con Head Eye mouse
Grazie Homunculus BaronVsCorsar maz85
credo che grazie al vostro aiuto e alla rilettura del manuale in italiano
sono arrivato ad una possibile conclusione:
CREATE - creo Set Variabile plant1 valore 0
- creo Draw Variabile plantt1 x 100 y 100
- creo script ({plant1.x= choose(200,300,100);
plant1.y= choose(500,400,50);}
il fatto che funzioni non significa che è concettualmente corretto ma credo che sia un piccolo inizio.
ora con lo stesso procedimento ho tentato di scegliere la textura dell'oggetto,
quello che mi è parso evidente è stato aggiungere choose e quindi:
var tex;
tex = sprite_get_texture (choose(tex_plant1,tex_plant2),0);
d3d_draw_wall(x-7*global.camsin,y-7*global.camcos,24,
x+7*global.camsin,y+7*global.camcos,0,tex,1,1);
ma forse perchè il comando DRAW applica in maniera perpetua...
il cambiamento tra le due texture è infinito.
Potreste, gentilmente farmi capire come correggere?
ancora grazie
credo che grazie al vostro aiuto e alla rilettura del manuale in italiano
sono arrivato ad una possibile conclusione:
CREATE - creo Set Variabile plant1 valore 0
- creo Draw Variabile plantt1 x 100 y 100
- creo script ({plant1.x= choose(200,300,100);
plant1.y= choose(500,400,50);}
il fatto che funzioni non significa che è concettualmente corretto ma credo che sia un piccolo inizio.
ora con lo stesso procedimento ho tentato di scegliere la textura dell'oggetto,
quello che mi è parso evidente è stato aggiungere choose e quindi:
var tex;
tex = sprite_get_texture (choose(tex_plant1,tex_plant2),0);
d3d_draw_wall(x-7*global.camsin,y-7*global.camcos,24,
x+7*global.camsin,y+7*global.camcos,0,tex,1,1);
ma forse perchè il comando DRAW applica in maniera perpetua...
il cambiamento tra le due texture è infinito.
Potreste, gentilmente farmi capire come correggere?
ancora grazie
- maz85
- Admin
- Messaggi: 8287
- Iscritto il: 07/02/2004, 15:57
- Specialità: Nientologo
- Località: Oblio
- Contatta:
Re: 3D compatibile con Head Eye mouse
Sposta questa parte nel create:
Codice: Seleziona tutto
var tex;
tex = sprite_get_texture (choose(tex_plant1,tex_plant2),0);
Votate GmItalia nella classifica!
Ultime dal fronte.... notizie e altro sul sito di GmItalia
°Pagina personale: % di sviluppo giochi e altro°
Ultime dal fronte.... notizie e altro sul sito di GmItalia
°Pagina personale: % di sviluppo giochi e altro°
Re: 3D compatibile con Head Eye mouse
quindi nel create dell'oggetto ho:
plant1.x= choose(200,250,100);
plant1.y= choose(150,100,200);
var tex;
tex = sprite_get_texture (choose(tex_plant1,tex_plant2),0);
nel draw resta:
d3d_draw_wall(x-7*global.camsin,y-7*global.camcos,24,
x+7*global.camsin,y+7*global.camcos,0,tex,1,1);
ma mi da questo errore
ERROR in
action number 1
of Draw Event
for object obj_plant1:
Error in code at line 4:
x+7*global.camsin,y+7*global.camcos,0,tex,1,1);
at position 50: Unknown variable tex
ho provato anche ad aggiungere nel draw
var tex;
ma il risultato non cambia,
dove sto sbagliando?
grazie
plant1.x= choose(200,250,100);
plant1.y= choose(150,100,200);
var tex;
tex = sprite_get_texture (choose(tex_plant1,tex_plant2),0);
nel draw resta:
d3d_draw_wall(x-7*global.camsin,y-7*global.camcos,24,
x+7*global.camsin,y+7*global.camcos,0,tex,1,1);
ma mi da questo errore
ERROR in
action number 1
of Draw Event
for object obj_plant1:
Error in code at line 4:
x+7*global.camsin,y+7*global.camcos,0,tex,1,1);
at position 50: Unknown variable tex
ho provato anche ad aggiungere nel draw
var tex;
ma il risultato non cambia,
dove sto sbagliando?
grazie
- BaronVsCorsar
- GMI VIP
- Messaggi: 4699
- Iscritto il: 14/02/2004, 12:05
- Specialità: Saccenza
- Uso: GameMaker 8.1
- Località: Ferrara
- Contatta:
Re: 3D compatibile con Head Eye mouse
L.E.G.G.I. I.L. M.A.N.U.A.L.E!
var tex;
significa che la variabile è locale al blocco di codice, vale a dire da quando lo scrivi fino alla chiusura del blocco di codice (normalmente il "}", o "end" a seconda della sintassi che usi).
Ricordati che ogni "piece of code" dovrebbe cominciare con
{
e finire con
}
e se non li metti "li aggiunge" GM.
Quindi se scrivi
var tex;
questa variabile esisterà solo nel "piece of code" dell'evento create, e da nessuna altra parte.
Togli il "var tex" e metti al suo posto un "tex= 0;" per definire la variabile,
poi utilizza il codice che stai già usando.
Così la variabile tex esiste anche nell'evento draw.
spero sia chiaro.
var tex;
significa che la variabile è locale al blocco di codice, vale a dire da quando lo scrivi fino alla chiusura del blocco di codice (normalmente il "}", o "end" a seconda della sintassi che usi).
Ricordati che ogni "piece of code" dovrebbe cominciare con
{
e finire con
}
e se non li metti "li aggiunge" GM.
Quindi se scrivi
var tex;
questa variabile esisterà solo nel "piece of code" dell'evento create, e da nessuna altra parte.
Togli il "var tex" e metti al suo posto un "tex= 0;" per definire la variabile,
poi utilizza il codice che stai già usando.
Così la variabile tex esiste anche nell'evento draw.
spero sia chiaro.
Schiva questo - http:\\baronvscorsar.altervista.org
by Lego: Vado in un bar e faccio "votiamo che quel tizio la in fondo venga buttato fuori", ma perché?
by Lego: Vado in un bar e faccio "votiamo che quel tizio la in fondo venga buttato fuori", ma perché?
- maz85
- Admin
- Messaggi: 8287
- Iscritto il: 07/02/2004, 15:57
- Specialità: Nientologo
- Località: Oblio
- Contatta:
Re: 3D compatibile con Head Eye mouse
Errore di distrazione mio, pardon.
Votate GmItalia nella classifica!
Ultime dal fronte.... notizie e altro sul sito di GmItalia
°Pagina personale: % di sviluppo giochi e altro°
Ultime dal fronte.... notizie e altro sul sito di GmItalia
°Pagina personale: % di sviluppo giochi e altro°
Re: 3D compatibile con Head Eye mouse
Grazie Baron,
chiara la tua spiegazione.
chiara la tua spiegazione.
Chi c’è in linea
Visitano il forum: Nessuno e 35 ospiti