0 registered members (),
18,008
guests, and 5
spiders. |
Key:
Admin,
Global Mod,
Mod
|
|
|
movement
#229908
10/01/08 14:12
10/01/08 14:12
|
Joined: Sep 2007
Posts: 28
craik
OP
Newbie
|
OP
Newbie
Joined: Sep 2007
Posts: 28
|
Also, hier mein Problem ich hoffe ihr könnt mir helfen: action move_me() { while(1) { if(key_w) { temp.x = mouse_pos.x; temp.y = mouse_pos.y; temp.z = 0; vec_for_screen(temp,camera); vec_sub(temp,me.x); vec_to_angle(me.pan,temp);
c_move(me, vector(5*time_factor,0,0),nullvector, IGNORE_ME);
}
Ich wollte mit diesem script erreichen das das entity dahin fährt wo die maus ist, es fährt aber nur zur kamera. Was mach ich falsch? Schon mal danke im Vorraus.
|
|
|
Re: movement
[Re: craik]
#229909
10/01/08 14:17
10/01/08 14:17
|
Joined: Mar 2008
Posts: 2,247 Baden Württemberg, Germany
Espér
Expert
|
Expert
Joined: Mar 2008
Posts: 2,247
Baden Württemberg, Germany
|
du musst den punkt wo es hin soll antracen...
function raster_scale(var* pos,var tile_size)
{
if(abs(fraction(pos[0]/tile_size)) > 0.5)
{pos[0] += (tile_size/2)*sign(pos[0]);}
if(abs(fraction(pos[1]/tile_size)) > 0.5)
{pos[1] += (tile_size/2)*sign(pos[1]);}
pos[0] = pos[0] * 1/tile_size;
pos[1] = pos[1] * 1/tile_size;
pos[0] = integer(pos[0]);
pos[1] = integer(pos[1]);
pos[0] = pos[0] * tile_size;
pos[1] = pos[1] * tile_size;
vec_to_angle(cursorblock.pan,vector(pos[0],pos[1],0));
c_move(cursorblock, vector(5*time_factor,0,0),nullvector, USE_BOX);
}
function tilemap()
{
while(1)
{
temp.x = mouse_pos.x;
temp.y = mouse_pos.y;
temp.z = camera.z;
vec_for_screen(temp,camera);
vec_set(mouse_click, mouse_dir3d);
vec_normalize(mouse_click, 10000);
vec_add(mouse_click, camera.x);
c_trace(camera.x, mouse_click, IGNORE_PASSABLE);
raster_scale(target.x,1);
wait(1);
}
}
Ersetzt "cursorblock" einfach mit dem pointer des entities. Habs nicht getestet.. sollte aber gehen.
Last edited by xXReapeRXx; 10/01/08 14:17.
|
|
|
Re: movement
[Re: craik]
#229910
10/01/08 14:20
10/01/08 14:20
|
Joined: Sep 2007
Posts: 28
craik
OP
Newbie
|
OP
Newbie
Joined: Sep 2007
Posts: 28
|
Sorry ich bin noch ein Anfänger, könntest du mir das vlt. erklären, will ja nicht ein spiel rein aus code schnipseln zusammen baun  Also mein Code hat ja vom Prinzip her eig funktioniert oder... er hat halt das entity in die passende richtung gedreht aber leider nicht auf den maus zeiger sondern auf die camera
Last edited by craik; 10/01/08 14:23.
|
|
|
Re: movement
[Re: craik]
#229912
10/01/08 14:28
10/01/08 14:28
|
Joined: Mar 2008
Posts: 2,247 Baden Württemberg, Germany
Espér
Expert
|
Expert
Joined: Mar 2008
Posts: 2,247
Baden Württemberg, Germany
|
oje XD
Also.. Du musst einen Strahl von der kamera-Position, zu der Maus-Position in der Welt schicken. das macht man mit c_trace
Trifft der Strahl auf ein objekt, so ist der pnkt des aufschlags "target". flits hat mir jetzt ma für meinen maker ein Script gemacht, wo ein block Feld-für-feld auf ein raster gelegt wurde. aufzurufen war das mit:
raster_scale(target.x,Feldgröße);
Stellt man die Feldgröße jetzt auf 1, isses wieder pixelgenau.
Alles was ich gemacht hab war, meinen code zu nehmen, und statt dem objekt die position direkt zu geben ( warpen zum target punkt ), hab ich das c_move gesetzt. so läuft das objekt in richtung des mauszeigers.
musst das c_move jetzt noch in ne abfrage packen, ob dein entity auf der position: pos[0] // X pos[1] // Y
ist. Damit er weider aufhört zu laufen wenn er angekommen iss.
Wie gesagt, kp obs 100% funktioniert.
|
|
|
Re: movement
[Re: craik]
#229919
10/01/08 14:47
10/01/08 14:47
|
Joined: Mar 2008
Posts: 2,247 Baden Württemberg, Germany
Espér
Expert
|
Expert
Joined: Mar 2008
Posts: 2,247
Baden Württemberg, Germany
|
Maustastenabfrage in lite-C geht anders als in wdl ^^
if(mouse_left == 1) if(mouse_right == 1) if(mouse_middle == 1)
Achte zudem darauf, das due mouse_range hochgedreht hast Ich verwende bei mir ne weite von 4000.
Last edited by xXReapeRXx; 10/01/08 14:47.
|
|
|
Re: movement
[Re: Espér]
#230277
10/04/08 12:28
10/04/08 12:28
|
Joined: Sep 2007
Posts: 28
craik
OP
Newbie
|
OP
Newbie
Joined: Sep 2007
Posts: 28
|
also ich hab jetzt mal den code schnipsel für mich verändert: function raster_scale(var* pos,var tile_size) { if(abs(fraction(pos[0]/tile_size)) > 0.5) {pos[0] += (tile_size/2)*sign(pos[0]);} if(abs(fraction(pos[1]/tile_size)) > 0.5) {pos[1] += (tile_size/2)*sign(pos[1]);} pos[0] = pos[0] * 1/tile_size; pos[1] = pos[1] * 1/tile_size; pos[0] = integer(pos[0]); pos[1] = integer(pos[1]); pos[0] = pos[0] * tile_size; pos[1] = pos[1] * tile_size; vec_to_angle(fisch.pan,vector(pos[0],pos[1],0));
c_move(fisch, vector(5*time_factor,0,0),nullvector, USE_BOX); }
function tilemap() { while(1) { temp.x = mouse_pos.x; temp.y = mouse_pos.y; temp.z = camera.z; vec_for_screen(temp,camera); vec_set(mouse_left, mouse_dir3d); vec_normalize(mouse_left, 10000); vec_add(mouse_left, camera.x); c_trace(camera.x, mouse_left, IGNORE_PASSABLE); raster_scale(target.x,1); wait(1); } }
die funktion tilemap ruf ich einfach bei mouse_left = 1 auf. So jetzt stürzt mein spiel immer ab wenn ich die linke mouse taste drücke ich denke das mouse left ist falsch oder... is eig kein vektor
Last edited by craik; 10/04/08 12:28.
|
|
|
Re: movement
[Re: craik]
#230332
10/04/08 19:26
10/04/08 19:26
|
Joined: Feb 2006
Posts: 385 Oldenburg,Germany
Ralph
Senior Member
|
Senior Member
Joined: Feb 2006
Posts: 385
Oldenburg,Germany
|
Probier es mal so:
VECTOR* temp=nullvector;
action move_me(){
my.skill4=0;
while(me!=NULL){
if(mouse_left==1){
temp.x=mouse_pos.x;
temp.y=mouse_pos.y;
temp.z=200;
vec_for_screen(temp,camera);
my.skill4=1;
}
if(my.skill4==1){
c_trace(temp.x,vector(temp.x,temp.y,temp.z-1000),IGNORE_ME);
vec_set(temp.x,target.x);
if(vec_dist(my.x,temp.x)>20){
vec_sub(temp.x,my.x);
vec_to_angle(my.pan,temp);
my.tilt=0;
my.skill1=5*time_step;
c_move(vector(my.skill1,0,0),nullvector,GLIDE);
}else{
my.skill4=0;
}
}
wait(1);
}
}
//und in der Main Funktion sollte das hier stehen:
function main(){
//.. irgendwas was du da hast
mouse_mode=1;
while(1){
mouse_pos.x=mouse_cursor.x;
mouse_pos.y=mouse_cursor.y;
wait(1);
}
}
MFG Ralph
Last edited by Ralph; 10/04/08 19:30.
|
|
|
Moderated by mk_1, Perro, rayp, Realspawn, Rei_Ayanami, rvL_eXile, Spirit, Superku, Tobias, TSG_Torsten, VeT
|