|
Re: ladder detection
[Re: 3run]
#311740
02/21/10 14:18
02/21/10 14:18
|
Joined: Sep 2003
Posts: 6,861 Kiel (Germany)
Superku
Senior Expert
|
Senior Expert
Joined: Sep 2003
Posts: 6,861
Kiel (Germany)
|
Do you notice something? And another thing: Version 1) : My cake tastes bad. What have I done wrong? Version 2) : I have used the following ingredients to make a cake: LIST. The cake tastes too sweet. What should I improve?
"Falls das Resultat nicht einfach nur dermassen gut aussieht, sollten Sie nochmal von vorn anfangen..." - Manual Check out my new game: Pogostuck: Rage With Your Friends
|
|
|
Re: ladder detection
[Re: TheThinker]
#311871
02/21/10 22:47
02/21/10 22:47
|
Joined: May 2009
Posts: 5,370 Caucasus
3run
OP
Senior Expert
|
OP
Senior Expert
Joined: May 2009
Posts: 5,370
Caucasus
|
HERE IS MY SCRIPT:
var climb = 0;
var allow_climb = 0;
var ladder_movement[3];
var ladder_normal[3];
var _result;
var dir1[3];
var dir2[3];
var pos1[3];
var pos2[3];
var pos3[3];
var trace_coords;
function ladder_event()
{
if(you)
{
if(you == player)
{
my.enable_impact = off; //prevent the event to be triggered again and again during climbing
vec_set(my.skill21,player.x); //store the players position
while(1)
{
proc_late();
climb = 1;
vec_set(player.x,my.skill21); //place it at the stored position to prevent the normal movement
my.skill30 = c_move(player,ladder_movement,nullvector,ignore_passable|ignore_passents|glide); //move the player up or down
if(camera.tilt > - 40)
{
ladder_movement.z = 25 * (key_w - key_s)*time_step;
}
if(camera.tilt < - 40)
{
ladder_movement.z = 25 * (key_s - key_w)*time_step;
}
ladder_movement.x = 0;
ladder_movement.y = 25*(key_a - key_d)*time_step;
vec_set(pos1,my.x);
vec_set(pos2,vector(1,0,0));
vec_rotate(pos2,my.pan);
vec_add(pos2,my.x);
vec_set(pos3,vector(0,0,1));
vec_rotate(pos3,my.pan);
vec_add(pos3,my.x);
vec_diff(dir1,pos1,pos2);
vec_diff(dir2,pos2,pos3);
vec_cross(ladder_normal,dir1,dir2);
vec_normalize(ladder_normal,1);
_result = (vec_dot(player.x,ladder_normal)-vec_dot(my.x,ladder_normal))/sqrt( vec_dot(ladder_normal,ladder_normal) );
vec_set(trace_coords.x, vector(400, 0, 0));
vec_rotate(trace_coords.x, player.pan);
vec_add(trace_coords.x, player.x);
c_trace(player.x, trace_coords.x, IGNORE_ME | GLIDE);
if(trace_hit){allow_climb = 1;}else{allow_climb = 0;}
if(allow_climb == 0 || _result < my.min_y || _result > my.max_y || key_space == 1)
{
climb = 0;
break;
}
vec_set(my.skill21,player.x);
wait(1);
}
climb = 0;
wait(-0.1);
my.enable_impact = on;
}
}
}
action ladder()
{
my.enable_impact = on;
my.event = ladder_event;
my.polygon = on;
c_setminmax(me);
}
But as I sad, not that good...is there any way to make trace wider?? please help...
|
|
|
Moderated by mk_1, Perro, rayp, Realspawn, Rei_Ayanami, rvL_eXile, Spirit, Superku, Tobias, TSG_Torsten, VeT
|