Gamestudio Links
Zorro Links
Newest Posts
Free Live Data for Zorro with Paper Trading?
by dr_panther. 05/18/24 11:01
Change chart colours
by 7th_zorro. 05/11/24 09:25
Data from CSV not parsed correctly
by dr_panther. 05/06/24 18:50
AUM Magazine
Latest Screens
The Bible Game
A psychological thriller game
SHADOW (2014)
DEAD TASTE
Who's Online Now
2 registered members (7th_zorro, dr_panther), 724 guests, and 3 spiders.
Key: Admin, Global Mod, Mod
Newest Members
Hanky27, firatv, wandaluciaia, Mega_Rod, EternallyCurious
19051 Registered Users
Previous Thread
Next Thread
Print Thread
Rate Thread
Player an starken Schrägen herabgleiten lassen #161150
10/15/07 16:28
10/15/07 16:28
Joined: Oct 2002
Posts: 799
Germany->Bavaria->Nuremberg
C
Christian__A Offline OP
User
Christian__A  Offline OP
User
C

Joined: Oct 2002
Posts: 799
Germany->Bavaria->Nuremberg
Hallo,
ich versuche seit einer Weile meinen Player an starken schrägen hinabgleiten zulassen. Dabei möchte ich, je höher der Winkel der Schräge ist, den Player stärker nach unten gleiten lassen, so dass ab einem best. Winkel der Player die Schräge gar nicht mehr hinaufkommt. Allerdings scheitern alle meine bisherigen Lösungsansätze, allerdings erscheint das ganz meist zu ruckartig.
Welche Lösungsansätze habt ihr da?
Gruß


MfG, Christian__A. Visit my Site: www.chris-a.de


Re: Player an starken Schrägen herabgleiten lassen [Re: Christian__A] #161151
10/15/07 16:38
10/15/07 16:38
Joined: Jul 2001
Posts: 6,904
H
HeelX Offline
Senior Expert
HeelX  Offline
Senior Expert
H

Joined: Jul 2001
Posts: 6,904
Führst du in jedem Frame Gravitation nach unten aus? Was für eine Kollisionsmethode benutzt du?

Re: Player an starken Schrägen herabgleiten lassen [Re: HeelX] #161152
10/15/07 16:48
10/15/07 16:48
Joined: Oct 2002
Posts: 799
Germany->Bavaria->Nuremberg
C
Christian__A Offline OP
User
Christian__A  Offline OP
User
C

Joined: Oct 2002
Posts: 799
Germany->Bavaria->Nuremberg
Gravity übe ich normalerweiße nur aus, solange der Player nicht zu weit vom Boden entfernt ist. Sobald ich auf Schrägen testweiße eine Hohe Gravity ansetze, gleitet bis zu einem bestimmten Wert der Player trozdem nicht nach unten (troz Glide) und bei höheren Werten komm ich auf gar keine Schrägen mehr rauf. Für den Player nutze ich OBB. Mein "Player-Model" ist btw. eine Röhre


MfG, Christian__A. Visit my Site: www.chris-a.de


Re: Player an starken Schrägen herabgleiten lassen [Re: Christian__A] #161153
10/15/07 18:33
10/15/07 18:33
Joined: Oct 2004
Posts: 262
Augsburg,Bayern
A
ARAS Offline
Member
ARAS  Offline
Member
A

Joined: Oct 2004
Posts: 262
Augsburg,Bayern
Hallo Christian__A,

versuche doch das ganze einmal mit dem z-Parameter der Normalen. Ab einem bestimmten
z-Wert der Normalen tritt die Drift nach unten in Kraft in Stärke der x- und y-Parameter der
Normalen.
Ich habe einmal ein kleines Skript aufgesetzt. Ich hoffe es ist einigermaßen verständlich.

Code:
 VECTOR vec_Von;
VECTOR vec_Nach;
VECTOR my_Bodenneigung;
VECTOR player_abs_force; // Absolute Geschwindigkeit
VECTOR player_abs_speed; //Absolute Bewegung
VECTOR player_rel_speed; // Relative Bewegung
var gravity = 0.7; // Allgemeine Gravitation

function Scanne_Boden()
{
vec_set(my_Bodenneigung,nullvector);
vec_set(vec_Von,MY.x);
vec_set(vec_Nach,MY.x);
vec_Nach.z -= 500;
c_trace(vec_Von, vec_Nach, IGNORE_ME|IGNORE_PASSENTS|IGNORE_PASSABLE|IGNORE_SPRITES|USE_BOX);
my_Bodenneigung.X = NORMAL.X; // Bestimmung der Normale unter dem Player
my_Bodenneigung.Y = NORMAL.Y; // Bestimmung der Normale unter dem Player
my_Bodenneigung.Z = NORMAL.Z; // Bestimmung der Normale unter dem Player
if(my_Bodenneigung.Z < 0.9) // Ab welchem Neigungswinkel die Drift in Kraft tritt
{
player_abs_force.X = my_Bodenneigung.x * gravity * 10; // Wert "10" erhöht oder verringert die Drift nach unten
player_abs_force.Y = my_Bodenneigung.y * gravity * 10; // Wert "10" erhöht oder verringert die Drift nach unten
player_abs_speed.x = player_abs_force.X * time_step; // Absolute Bewegung des Players
player_abs_speed.y = player_abs_force.Y * time_step; // Absolute Bewegung des Players
}
c_move(me,player_rel_speed,player_abs_speed,IGNORE_ME|IGNORE_PASSENTS|IGNORE_PASSABLE|GLIDE);
}



Müßte so in dieser Art funktionieren.
Vielleicht hast Du ja soetwas gesucht.

Re: Player an starken Schrägen herabgleiten lassen [Re: ARAS] #161154
10/15/07 19:42
10/15/07 19:42
Joined: Sep 2003
Posts: 9,859
F
FBL Offline
Senior Expert
FBL  Offline
Senior Expert
F

Joined: Sep 2003
Posts: 9,859
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.

Re: Player an starken Schrägen herabgleiten lassen [Re: FBL] #161155
10/16/07 17:08
10/16/07 17:08
Joined: Oct 2002
Posts: 799
Germany->Bavaria->Nuremberg
C
Christian__A Offline OP
User
Christian__A  Offline OP
User
C

Joined: Oct 2002
Posts: 799
Germany->Bavaria->Nuremberg
ARAS, mein aktueller Ansatz basiert genau auf dem was du beschrieben hast. Ich habe zusätzlich noch einen Faktor, welche die Kraft, die den Player nach unten zieht, skaliert. Der Faktor wächst je nach Schräglage stärker an (bis zu einem Max-Wert.). Davon habe ich mir erhoft, das Problem zu lösen, dass der Player von zu starken Schrägen sozusagen "abprallt"... Ich hab mal ein Video erstellt, auf dem das recht gut zu sehen ist: www.phz-games.de/20071016_player_move.avi ... und ein Stück Code (achtung C++ ). Absvec ist der Vektor für den absoluten Teil von c_move(). @Firo: Wenn ich mit meinem Code nicht weiterkomm, probier ich deinen gern mal aus, danke!

Code:
 

absvec.x = 0;
absvec.y = 0;

//Bei starken schrägen Player nach unten gleiten lassen
if ( _DOUBLE(ground_normal.z) < bevel_under_normal_z && grounddist < 10 )
{
current_bevel_speed += bevel_acc_fac * perister->timestep;

if ( current_bevel_speed > bevel_speed * (bevel_under_normal_z - _DOUBLE(ground_normal.z)))
{
current_bevel_speed = bevel_speed * (bevel_under_normal_z - _DOUBLE(ground_normal.z));
}

absvec.z += (ground_normal.z - _VAR(1)) * _VAR(perister->timestep*current_bevel_speed);
absvec.x += ground_normal.x * _VAR(perister->timestep*current_bevel_speed);
absvec.y += ground_normal.y * _VAR(perister->timestep*current_bevel_speed);
}
else
{
current_bevel_speed = 0;
}


absvec.z += _VAR(current_jumpforce*perister->timestep);




MfG, Christian__A. Visit my Site: www.chris-a.de



Moderated by  HeelX, Lukas, rayp, Rei_Ayanami, Superku, Tobias, TWO, VeT 

Gamestudio download | chip programmers | Zorro platform | shop | Data Protection Policy

oP group Germany GmbH | Birkenstr. 25-27 | 63549 Ronneburg / Germany | info (at) opgroup.de

Powered by UBB.threads™ PHP Forum Software 7.7.1