|
|
Re: Winkelausrichtung eines Pfeils an Flugbahn, aber wie ?
[Re: Ascalon]
#207205
05/18/08 12:39
05/18/08 12:39
|
Joined: Mar 2004
Posts: 92 Dresden
Revo
Junior Member
|
Junior Member
Joined: Mar 2004
Posts: 92
Dresden
|
achso: naja - du musst natürlich noch ne eventfunktion für deinen Pfeil erstellen, die ausgelöst wird, wenn der womit kollidiert. Dann musst du die Bewegung stoppen und kannst z.B. auslesen wo der Pfeil gelandet ist (vec_dist). (Oo war ich wohl zu langsam ^^)
Last edited by Revo; 05/18/08 12:40.
|
|
|
Re: Winkelausrichtung eines Pfeils an Flugbahn, aber wie ?
[Re: Joey]
#207251
05/18/08 18:26
05/18/08 18:26
|
Joined: Apr 2005
Posts: 274 austria
Ascalon
OP
Member
|
OP
Member
Joined: Apr 2005
Posts: 274
austria
|
also bei mir sieht der code im moment so aus :
function stop_arrow()
{
if(event_type == EVENT_BLOCK)
{
wait(-5);
ent_remove(my);
}
}
function move_arrow()
{
VECTOR arrow_speed;
my.emask = ENABLE_BLOCK;
my.event = stop_arrow;
my.pan = camera.pan;
my.tilt = camera.tilt;
vec_set(arrow_speed,vector(30,0,0));
vec_rotate(arrow_speed,my.pan);
while(1)
{
arrow_speed.z -= 0.5*time_step;
vec_to_angle(my.pan,arrow_speed);
c_move(my,nullvector,arrow_speed,IGNORE_YOU | IGNORE_PASSABLE);
wait(1);
}
}
function fire_arrow()
{
VECTOR temp;
vec_set(temp,guard.x);
pfeil = ent_create("pfeil.mdl",temp,move_arrow);
}
es funktioniert auch alles einwandfrei, außer dass sich die pfeilspitze immer senkrecht nach unten dreht
|
|
|
Re: Winkelausrichtung eines Pfeils an Flugbahn, aber wie ?
[Re: Ascalon]
#207259
05/18/08 20:03
05/18/08 20:03
|
Joined: Jan 2003
Posts: 4,615 Cambridge
Joey
Expert
|
Expert
Joined: Jan 2003
Posts: 4,615
Cambridge
|
das problem ist, dass deine event-funktion die haupt-aktion nicht stoppt. #define FLYING FLAG2
function stop_arrow()
{
if(event_type == EVENT_BLOCK)
{
reset(my, FLYING);
wait(-5);
ent_remove(my);
}
}
function move_arrow()
{
VECTOR arrow_speed;
my.emask = ENABLE_BLOCK;
my.event = stop_arrow;
my.pan = camera.pan;
my.tilt = camera.tilt;
vec_set(arrow_speed,vector(30,0,0));
vec_rotate(arrow_speed,my.pan);
set(my, FLYING);
while(is(my, FLYING))
{
arrow_speed.z -= 0.5*time_step;
vec_to_angle(my.pan,arrow_speed);
c_move(my,nullvector,arrow_speed,IGNORE_YOU | IGNORE_PASSABLE);
wait(1);
}
}
|
|
|
|