Gamestudio Links
Zorro Links
Newest Posts
Change chart colours
by 7th_zorro. 05/11/24 09:25
Data from CSV not parsed correctly
by dr_panther. 05/06/24 18:50
AUM Magazine
Latest Screens
The Bible Game
A psychological thriller game
SHADOW (2014)
DEAD TASTE
Who's Online Now
2 registered members (vicknick, AndrewAMD), 1,292 guests, and 3 spiders.
Key: Admin, Global Mod, Mod
Newest Members
Hanky27, firatv, wandaluciaia, Mega_Rod, EternallyCurious
19051 Registered Users
Previous Thread
Next Thread
Print Thread
Rate Thread
problem mit vec_to_screen [solved] #315721
03/18/10 14:46
03/18/10 14:46
Joined: Feb 2004
Posts: 334
metal Offline OP
Senior Member
metal  Offline OP
Senior Member

Joined: Feb 2004
Posts: 334
hi,
ich versuche per vec_to_screen und draw_text den namen eines models über dessen kopf anzuzeigen, aber irgendwas haut da nicht hin und ich komm nicht drauf wo was falsch läuft.

der name wird zwar angezeigt, aber er flimmert quer über den bildschirm, anstatt über dem model zu bleiben.

hier der code:



typedef struct Starsystem{
STRING* name;
int x;
int y;
ENTITY* my_mdl;
struct Starsystem* next;
} Starsystem;


typedef struct{
Starsystem* first;
} List_Starsystem;

List_Starsystem* g_List_Starsystem={first=NULL;}


function init_starsystems(){
planet = ent_create("ball.mdl",vector(0,0,0),NULL);
Starsystem* tempsys = malloc(sizeof(Starsystem));
memset(tempsys,0,sizeof(Starsystem));
tempsys.name= "System1";
tempsys.x=0;
tempsys.y=0;
tempsys.my_mdl=planet;
tempsys.next=NULL;
g_List_Starsystem.first=tempsys;


planet = ent_create("ball.mdl",vector(128,-256,0),NULL);
Starsystem* tempsys = malloc(sizeof(Starsystem));
memset(tempsys,0,sizeof(Starsystem));
tempsys.name= "System2";
tempsys.x=128;
tempsys.y=-256;
tempsys.my_mdl=planet;
tempsys.next=NULL;
g_List_Starsystem.first.next=tempsys;


}






function debug_text(){
var tempvar[3];
me=g_List_Starsystem.first.next.my_mdl;
tempvar[0]=my.x;
tempvar[1]=my.y;
tempvar[2]=my.z+50;

while(1){
vec_to_screen(tempvar,camera);

if(vec_to_screen(tempvar,camera)!=NULL){
draw_text(g_List_Starsystem.first.next.name,tempvar[0],tempvar[1],vector(100,100,255));
}

draw_text(str_for_num(NULL,tempvar[1]),10,40,vector(100,100,2550));
draw_text(str_for_num(NULL,my.x),10,80,vector(100,100,255));

wait(1);
}
}



function main(){
...
init_starsystems();
debug_text();
}




die letzten beiden draw_text anweisungen hab ich eingebaut, um zu schauen was mit den koordinaten los ist, da zeigt die zweite anweisung 128 an, was auch so stimmt und die erste ändert sich laufend.


hat jemand ne ahnung wo da der fehler liegt...bin langsam zu blind um da noch weiterzukommen frown

Last edited by metal; 03/18/10 15:49.
Re: problem mit vec_to_screen [Re: metal] #315726
03/18/10 15:22
03/18/10 15:22
Joined: Jul 2002
Posts: 4,436
Germany, Luebeck
Xarthor Offline
Expert
Xarthor  Offline
Expert

Joined: Jul 2002
Posts: 4,436
Germany, Luebeck
Ist jetzt mehr geraten aber evtl löst sich das problem wenn du diese drei zeilen an den anfang der while loop schreibst (also mit in die while loop hinein):
Code:
tempvar[0]=my.x;
tempvar[1]=my.y;
tempvar[2]=my.z+50;



Denn: vec_to_screen übersetzt von welt koordinaten in bildschirm koordinaten.
also machst du wahrscheinlich einmal das richtige welt koordinaten -> bildschirm koordinaten und anschließend werden jedesmal die bildschirm koordinaten wieder umgewandelt in bildschirmkoordinaten

Kann mich aber auch irren.

edit:
Quote aus dem manual dazu:
Quote:

Converts the XYZ coordinates of the given vector to screen coordinates. After the instruction, the X and Y coordinates of the vector contain the XY screen position and the Z coordinate contains the distance to the screen plane.

Dürfte also ein problem wenn nicht das problem sein.

Last edited by Xarthor; 03/18/10 15:24.
Re: problem mit vec_to_screen [Re: Xarthor] #315728
03/18/10 15:43
03/18/10 15:43
Joined: Feb 2004
Posts: 334
metal Offline OP
Senior Member
metal  Offline OP
Senior Member

Joined: Feb 2004
Posts: 334
ah danke...die zeilen gehören tatsächlich in die schleife rein laugh
jetzt flimmerts nicht mehr quer übern bildschirm..wird zwar immer noch nicht über dem model angezeigt, aber zumindest einf ehler weniger.....mal guggen ob ich den rest noch hinbekomme.
danke dir!

EDIT: Problem gelöst. lag daran, dass ich vec_to_screen ein 2tes mal in der if-bedingung aufgerufen hab
...kaum zu glauben, 2h nach dem fehler gesucht aber auf die zwei kleinigkeiten komm ich nicht..kopf->tisch grin


Moderated by  HeelX, Lukas, rayp, Rei_Ayanami, Superku, Tobias, TWO, VeT 

Gamestudio download | chip programmers | Zorro platform | shop | Data Protection Policy

oP group Germany GmbH | Birkenstr. 25-27 | 63549 Ronneburg / Germany | info (at) opgroup.de

Powered by UBB.threads™ PHP Forum Software 7.7.1