Code:
/* calculate sliding for slopes depending on normal */
if (normal.z < 0.3)
{
vec_to_angle(angTemp, normal);
vec_set(my.aforceX, vector(1, 0, 0));
vec_scale(my.aforceX, AforceSlope * cos(angTemp.tilt));
vec_rotate(my.aforceX, vector(angTemp.pan, 0, 0));
}
else
vec_set(my.aforceX, nullvector);
use my.aforceX
next frame for c_move...
The following part will be somewhere above the first one
Code:
/* force calculations */
my.aforceZ = Agravity;
vec_accelerate(vecDist, my.speedX, my.forceX, Afriction);
vec_accelerate(vecAdist, my.aspeedX, my.aforceX, Afriction);
c_move(me, vecDist, vecAdist, IGNORE_ME|IGNORE_YOU|IGNORE_PASSABLE|USE_AABB|GLIDE);
Values I used in my test:
Code:
#define AforceSlope 15
#define Agravity -14
#define Afriction 0.55
Don't ask how I found the cos formel out. I was try<ing to figure it out by using maths, but failed, so I started testing and came up with this one in a few minutes.