entity schwebt.

Posted By: starwolf

entity schwebt. - 05/28/06 12:47

habe eine schwebende kugel die ich auf denn boden des raumes setzen will und versuche über scripte dies nun zu meistern doch sie schwebt immer noch.

1: habe die A6 extra von sybex also keine c_befehle möglich
2: kollision passt soweit.
3: Modell in MED genau auf dem nullpunkt der Achsen
4: script

action my_ball
{
my.passable == off;
var move_vec [3];

while(me)
{
move_vec.x = 10 * (key_w-key_s) * time;
move_vec.y = 10 * (key_a-Key_d) * time;
vec_set(temp,my.x);
temp.z -= 1000;
trace_mode = glide;
trace(my.x,temp);
if(result>0){
my.z -= result;
}
wait(2);

move_mode = glide;
result = ent_move (move_vec, nullvector);
wait (1);
}
}

weiß einer woran das liegen kann?
Posted By: Slin

Re: entity schwebt. - 05/28/06 13:29

Versuchs mal so:

action my_ball
{
my.passable == off;
var move_vec [3];

while(me)
{
move_vec.x = 10 * (key_w-key_s) * time;
move_vec.y = 10 * (key_a-Key_d) * time;

vec_set(temp,my.x);
temp.z -= 1000;
trace_mode = use_box;
my.skill20 = trace(my.x,temp);
my.z -= result;

move_mode = glide;
ent_move (move_vec, nullvector);

wait (1);
}
}
Posted By: starwolf

Re: entity schwebt. - 05/28/06 13:40

mit dem code entschwebt die kugel in die unendlichkeit nach oben.
was könnte es denn noch sein ?
Posted By: starwolf

Re: entity schwebt. - 05/28/06 14:02

sagmal ist das eigentlich normal das die entity bei bewegung mit kollision immer nen gewissen abstand zu denn wänden behält ? sollte die nicht immer genau auf die wand treffen ?
Posted By: Xarthor

Re: entity schwebt. - 05/28/06 15:18

Ja, bei dem alten Kollisions-system ist das normal, da um das entity herum eine bounding-box berechnet wird die die kollision übernimmt.

Code:

action my_ball
{
my.passable == off;
var move_vec [3];

while(me)
{
move_vec.x = 10 * (key_w-key_s) * time;
move_vec.y = 10 * (key_a-Key_d) * time;

vec_set(temp,my.x);
temp.z -= 1000;
trace_mode = ignore_me + ignore_passable + use_box;
my.skill20 = trace(my.x,temp);
my.z -= my.skill20;

move_mode = glide;
ent_move (move_vec, nullvector);

wait (1);
}
}


Probiers mal mit dem code Hab den trace_mode ein bissle geändert.
Posted By: Slin

Re: entity schwebt. - 05/28/06 15:23

oh sorry ich hab noch ein paar sachen über sehen:

action my_ball
{
my.passable == off;
var move_vec [3];

while(me)
{
move_vec.x = 10 * (key_w-key_s) * time;
move_vec.y = 10 * (key_a-Key_d) * time;

vec_set(temp,my.x);
temp.z = 1000;
trace_mode = use_box;
my.skill20 = trace(my.x,temp);
my.z -= my.skill20;

move_mode = glide;
ent_move(move_vec, nullvector);

wait (1);
}
}


Auf die wand treffen tut nur die boundingbox welche viereckig ist.
Mit my.polygon = on würde es tatsächlich die wand berühren.
wenn du my.narrow = on setzt müsste die kügel eigentlich in die wand reingehen bis zu dem punkt wo du bonding box anfängt.
Posted By: starwolf

Re: entity schwebt. - 05/28/06 15:37

ja leider geht das my.polygon noch nicht aber ich spare schon auf die com version, ok soweit klappt das nur noch eine bitte wie berechnet man das die entinity zwar denn punkt erreicht aber wenn sie über eine sagen wir rampe fährt nicht direkt denn boden erreicht sondern sagen wir mal mit nem wert von 5 pro sek runtergeht ?

dankeeeeeeeeeeee ihr bringt mich dem anfang meines ersten spiels immer näher grins.
Posted By: Slin

Re: entity schwebt. - 05/28/06 16:29

Dann musst du mit if überprüfen wie groß der abstand zum boden ist und den ball dann entsprechend auf den boden bewegen:

action my_ball
{
my.passable == off;
var move_vec [3];

while(me)
{
move_vec.x = 10 * (key_w-key_s) * time;
move_vec.y = 10 * (key_a-Key_d) * time;

vec_set(temp,my.x);
temp.z = 1000;
trace_mode = use_box;
my.skill20 = trace(my.x,temp);
if(my.skill20 > 2) //diese Zahl muss vielleicht etwas größer oder kleiner sein
{
move_vec.z -= 1*time; //diese zahl bestimmt die fallgeschwindigkeit
}else
{
if(my.skill20 < 0)
{
move_vec.z += 1*time;
}else
{
move_vec.z = 0;
}
}
move_mode = glide;
ent_move(move_vec, nullvector);

wait (1);
}
}
Posted By: anarchie2199

Re: entity schwebt. - 05/30/06 09:50

Wenn du die bounding_box nicht nutzen willst, mache es so:

- erstelle eine Map-Entity die genau die Ausmaße der Kugel hat
- bewege diese Entity und setze die Kugel nur an die jeweilige Position -> die Map-Entity sorgt für Kollision und ist invisible, die Kugel ist visible und passable.


MFG;
Punker.
© 2024 lite-C Forums