creare oggetti in base alla posizione del mouse

Argomenti riguardanti il D3D di GameMaker e librerie esterne.
Rispondi
spriters2000
Membro attivo
Messaggi: 431
Iscritto il: 29/07/2011, 12:04
Specialità: Programmazione
Contatta:

creare oggetti in base alla posizione del mouse

Messaggio da spriters2000 »

Sto creando un programma e vorrei che in base alla posizione del mouse mi crei una figura primitiva tridimensionale(esempio una sfera)
vorrei che però la profondità non sia fissa, anzi, vorrei che la profondità si regoli in base a se qualche sfera stà nella posizione inizialmente predefinita
Se ve lo chiedete, sì, ho seguito una guida sul 3D, ma non mi si sono mai presentate situazioni simili.
posso dare maggiori precisazioni se necessarie, basta che me lo chiediate, io intanto spero di essere stato chiaro.

Avatar utente
civic71
GMI Advanced
Messaggi: 2210
Iscritto il: 23/10/2003, 17:31
Specialità: Risotto con zucchine
Uso: GM:Studio 1.4 Pro
Località: Jesolo (venezia)
Contatta:

Re: creare oggetti in base alla posizione del mouse

Messaggio da civic71 »

creare oggetti in base alla posizione del mouse
Forse non ho capito bene perché mi sembra strano che cerchi questo semplice script , comunque lo riporto :

Codice: Seleziona tutto

instance_create(mouse_x,mouse_y,object0);

Avatar utente
NeatWolf
Membro super
Messaggi: 684
Iscritto il: 03/08/2011, 12:09
Specialità: Programmazione
Località: Oristano, Sardegna, Italia
Contatta:

Re: creare oggetti in base alla posizione del mouse

Messaggio da NeatWolf »

spriters2000 ha scritto:Sto creando un programma e vorrei che in base alla posizione del mouse mi crei una figura primitiva tridimensionale(esempio una sfera)
vorrei che però la profondità non sia fissa, anzi, vorrei che la profondità si regoli in base a se qualche sfera stà nella posizione inizialmente predefinita
Se ve lo chiedete, sì, ho seguito una guida sul 3D, ma non mi si sono mai presentate situazioni simili.
posso dare maggiori precisazioni se necessarie, basta che me lo chiediate, io intanto spero di essere stato chiaro.
Non sono particolarmente ferrato (leggi: dovrei ripassarmi un attimo la geometria nello spazio) nella programmazione 3D ma magari riformulare la domanda aiuterà qualcuno a risponderti in maniera puntuale:

Vuoi sapere come si crea, in 3D, in prospettiva, una sfera nello spazio in base alla proiezione del tuo click sullo schermo, ed eventualmente, se in quella posizione è già presente un'altra sfera, crearla col centro nel punto esatto in cui la proiezione del tuo click collide col poligono del solido già presente?
Info: Immagine FB | G+ | A.D.O.N. Project | Videos:YT

spriters2000
Membro attivo
Messaggi: 431
Iscritto il: 29/07/2011, 12:04
Specialità: Programmazione
Contatta:

Re: creare oggetti in base alla posizione del mouse

Messaggio da spriters2000 »

ok, ho provato con questo codice:
obj_sphere:
Spoiler
event create:

Codice: Seleziona tutto

z=0

Codice: Seleziona tutto

d3d_draw_ellipsoid(x-16,y-16,z-16,x+8,y+8,z+8,background0,1,1,200);
camera:
Spoiler
event create:

Codice: Seleziona tutto

d3d_start();
d3d_set_perspective(1);
d3d_set_hidden(1);
d3d_set_fog(1,c_white,1,1024);
d3d_set_lighting(0);
d3d_set_culling(1);
draw_set_color(c_white);
d3d_set_shading(0);
texture_set_interpolation(0);

Codice: Seleziona tutto

z=0

Codice: Seleziona tutto

lenght=0
event step

Codice: Seleziona tutto

d3d_set_projection(35,global.lenght,0,obj_sphere.x,obj_sphere.y,obj_sphere.z,0,0,1)
event mouse left button

Codice: Seleziona tutto

instance_create(mouse_x,mouse_y,obj_sphere);
event draw

Codice: Seleziona tutto

d3d_set_projection(35,global.lenght,0,obj_sphere.x,obj_sphere.y,obj_sphere.z,0,0,1)
con questo avrei dovuto fare in modo che alla pressione del mouse compaia un obj_sphere, invece non si vede un minimo cambiamento.
Per ora il mio obbiettivo non era regolare la profondità della sfera, ma solo crearla.
Perfavore, mi direste cosa ho sbagliato?
Se serve cerchèrò di essere ancor più specifico

Avatar utente
civic71
GMI Advanced
Messaggi: 2210
Iscritto il: 23/10/2003, 17:31
Specialità: Risotto con zucchine
Uso: GM:Studio 1.4 Pro
Località: Jesolo (venezia)
Contatta:

Re: creare oggetti in base alla posizione del mouse

Messaggio da civic71 »

Premetto che il d3d di GM non l'ho mai provato , ma se si parla di 3D e si crea un object alle coordinate della posizione del mouse , non significa che lo si veda in quella posizione.
Non mi ricordo se su d3d la z sia la profondità oppure l' altezza dal suolo ( in Ultimate3D per esempio z è la posizione in altezza e x e y sono invertite rispetto al GML ) .
Forse se la visuale è dall' alto verso il basso....
Bo , prova a modificare il valore di z ad valore per esempio 30 o a -30 . Si dovrebbe anche calcolare se la visuale non sia troppo distante oppure che l'oggetto non sia troppo piccolo o troppo grande :protect:
... insomma :work:

spriters2000
Membro attivo
Messaggi: 431
Iscritto il: 29/07/2011, 12:04
Specialità: Programmazione
Contatta:

Re: creare oggetti in base alla posizione del mouse

Messaggio da spriters2000 »

scusatemi, non ho fatto in tempo ad aggiornarvi che c'era già un'altra risposta,ora la situazione è questa:
Spoiler
sphere:
Spoiler
event_create

Codice: Seleziona tutto

z=mouse_y
event draw:

Codice: Seleziona tutto

z=0;
d3d_draw_ellipsoid(x-16,y-16,z-16,x+16,y+16,z+16,background_get_texture(colour),1,1,200);
camera
Spoiler
event create

Codice: Seleziona tutto

d3d_start();
d3d_set_perspective(1);
d3d_set_hidden(1);
d3d_set_lighting(0);
d3d_set_culling(1);
draw_set_color(c_white);
d3d_set_shading(1);
texture_set_interpolation(0);

Codice: Seleziona tutto

z=0
event step

Codice: Seleziona tutto

d3d_set_projection(x,y,64,sphere.x,sphere.y,sphere.z,0,0,1)
event mouse left button

Codice: Seleziona tutto

instance_create(mouse_x,mouse_y,sphere);
event draw

Codice: Seleziona tutto

d3d_set_projection(x,y,64,sphere.x,sphere.y,sphere.z,0,0,1)
Ora riesco a disegnare le sfere, ma la loro posizione verticale è opposta a quella del cursore quando premo il pulsante sinistro del mouse.
Non so se esiste un modo per ovviare al problema(contando che la y è misurata dall'alto verso il basso e la z il contrario)
Ultima modifica di spriters2000 il 29/04/2012, 9:16, modificato 1 volta in totale.

spriters2000
Membro attivo
Messaggi: 431
Iscritto il: 29/07/2011, 12:04
Specialità: Programmazione
Contatta:

Re: creare oggetti in base alla posizione del mouse

Messaggio da spriters2000 »

comunque dovrei risolvere anche il problema per cui se il mouse si muove troppo le sfere vengono distanti.

Avatar utente
civic71
GMI Advanced
Messaggi: 2210
Iscritto il: 23/10/2003, 17:31
Specialità: Risotto con zucchine
Uso: GM:Studio 1.4 Pro
Località: Jesolo (venezia)
Contatta:

Re: creare oggetti in base alla posizione del mouse

Messaggio da civic71 »

Probabile che la grandezza della view del gioco non sia uguale alla grandezza del probabile terreno 3D ... Ovvero se clicchi ad x=1200 e y =1200 , potresti vedere la sfera creata in una posizione molto distante. tuttavia ti basterebbe settare la posizione x e y della sfera 3d che verrà creata , così :

instance_create(mouse_x/10,mouse_y/10,sphere);

Rispondi

Chi c’è in linea

Visitano il forum: Nessuno e 31 ospiti