0 registered members (),
17,886
guests, and 5
spiders. |
Key:
Admin,
Global Mod,
Mod
|
|
|
rotate player the shortest way
#258617
03/31/09 22:01
03/31/09 22:01
|
Joined: Mar 2008
Posts: 2,247 Baden Württemberg, Germany
Espér
OP
Expert
|
OP
Expert
Joined: Mar 2008
Posts: 2,247
Baden Württemberg, Germany
|
Hi.. I created this Script:
function rotate(h_direction)
{
while(sign(ang(h_direction - player.pan)) != 0)
{
h_directionset = sign(ang(h_direction - player.pan));
player.pan += (h_directionset*20)*time_step;
if(fraction(player.pan) >= 0.5)
{
player.pan = integer(player.pan)+1;
}else
{
player.pan = integer(player.pan);
}
wait(1);
}
}
This rotates the player to an angle i choose. In my RPG, they are 0 / 360, 90, 180, 270. The Problem: Wehn the FPS are low, the player looks like he is shaking... Do you know a better way???
|
|
|
Re: rotate player the shortest way
[Re: Joozey]
#258629
03/31/09 23:27
03/31/09 23:27
|
Joined: Mar 2008
Posts: 2,247 Baden Württemberg, Germany
Espér
OP
Expert
|
OP
Expert
Joined: Mar 2008
Posts: 2,247
Baden Württemberg, Germany
|
hmm.. tried this:
function rotate(h_direction)
{
while(sign(ang(h_direction - player.pan)) >= -5 && sign(ang(h_direction - player.pan)) <= 5)
{
h_directionset = sign(ang(h_direction - player.pan));
player.pan += (h_directionset*20)*time_step;
if(fraction(player.pan) >= 0.5)
{
player.pan = integer(player.pan)+1;
}else
{
player.pan = integer(player.pan);
}
wait(1);
}
}
but same problem ( sometimes, it looks like 2 models are rotating against each other )..
|
|
|
Re: rotate player the shortest way
[Re: garv3]
#259037
04/03/09 14:53
04/03/09 14:53
|
Joined: Mar 2008
Posts: 2,247 Baden Württemberg, Germany
Espér
OP
Expert
|
OP
Expert
Joined: Mar 2008
Posts: 2,247
Baden Württemberg, Germany
|
uhm.. plz don´t think i´m stupid.. but.. can someone comment out this code:
vec_set (temp_enemy_rotate.x, destination_node.x);
vec_sub (temp_enemy_rotate.x, my.x);
vec_to_angle (temp_enemy_rotate_2.x, temp_enemy_rotate.x);
if(my.pan == temp_enemy_rotate_2.x)
{
my.pan=my.pan;
}
else
{
rotate_result = ang(temp_enemy_rotate_2.x - my.pan);
if (rotate_result > 0)my.pan += 20 * time_step;
if (rotate_result < 0)my.pan -= 20 * time_step;
if ((ang(temp_enemy_rotate_2.x - my.pan) < 0) && (rotate_result > 0)) my.pan = temp_enemy_rotate_2.x;
if ((ang(temp_enemy_rotate_2.x - my.pan) > 0) && (rotate_result < 0)) my.pan = temp_enemy_rotate_2.x;
because i think i´ve a blackout.. can´t say how this should working with a 90° by 90° rotation.. >.<
|
|
|
|