Gamestudio Links
Zorro Links
Newest Posts
Newbie Questions
by fairtrader. 12/05/23 14:22
Zorro Trader GPT
by TipmyPip. 12/04/23 11:34
Square root rule
by Smallz. 12/02/23 09:15
RTest not found error
by TipmyPip. 12/01/23 21:43
neural function for Python to [Train]
by TipmyPip. 12/01/23 14:47
Xor Memory Problem.
by TipmyPip. 11/28/23 14:23
Training with command line parameters
by TipmyPip. 11/26/23 08:42
Combine USD & BTC Pairs In Asset Loop
by TipmyPip. 11/26/23 08:30
AUM Magazine
Latest Screens
A psychological thriller game
SHADOW (2014)
DEAD TASTE
Tactics of World War I
Who's Online Now
3 registered members (AndrewAMD, fairtrader, 3run), 599 guests, and 0 spiders.
Key: Admin, Global Mod, Mod
Newest Members
fairtrader, hus, Vurtis, Harry5, KelvinC
19019 Registered Users
Previous Thread
Next Thread
Print Thread
Rate Thread
Page 2 of 3 1 2 3
Re: Player bewegt sich nur auf einer höhe [Re: Uhrwerk] #143008
07/25/07 19:48
07/25/07 19:48
Joined: Jul 2007
Posts: 288
Germany, NRW
Martek Offline OP
Member
Martek  Offline OP
Member

Joined: Jul 2007
Posts: 288
Germany, NRW
Ja, das habe ich jetzt soweit verstanden, nur wo soll die den tiefsten Vertex
meiner Figur herbekommen??? Ich benutze Guard.mdl.

Sry für solche fragen, aber habe erst vor kurzem angefangen, kenne mich deswegen noch net so gut aus.

Pingulord


3D Gamestudio A7 Extra
Re: Player bewegt sich nur auf einer höhe [Re: Martek] #143009
07/25/07 20:28
07/25/07 20:28
Joined: Jan 2002
Posts: 4,225
Germany / Essen
Uhrwerk Offline
Expert
Uhrwerk  Offline
Expert

Joined: Jan 2002
Posts: 4,225
Germany / Essen
From the manual:
Quote:

vec_for_min (VECTOR*, ENTITY*);
vec_for_max(VECTOR*, ENTITY*);
Sets the vector to the minimum resp. maximum vertex coordinates of the current model, terrain, or map entity, relative to the entities' origin. For a model the coordinates of its current vertex frame is used. This instruction can set an entities' bounding box to it's reals size instead of using the default min_x..max_x parameters.
Parameters:
VECTOR* vector to be set to the minimum or maximum coordinates
ENTITY* pointer to the entity

Speed:
Medium
Example:
// set the bounding box to the real size of its first framemy.frame = 1;vec_for_min(my.min_x, my);vec_for_max(my.max_x, my);





Das ist die bessere und langsamere Lösung. Die andere ist einfach einen festen Wert zu nehmen. Du brauchst dich für die Fragen nicht zu entschuldigen. Dafür ist das Forum doch schließlich da. Außerdem schlägst Du dich ganz beachtlich durch und das fast alleine!


Always learn from history, to be sure you make the same mistakes again...
Re: Player bewegt sich nur auf einer höhe [Re: Uhrwerk] #143010
07/25/07 21:09
07/25/07 21:09
Joined: Jul 2007
Posts: 288
Germany, NRW
Martek Offline OP
Member
Martek  Offline OP
Member

Joined: Jul 2007
Posts: 288
Germany, NRW
ja mit den Vec_for _min verstehe ich ja, ur das mit dem c_trace net.
Was für werte muss ich da für die Vectoren eingeben???

Und wie soll das mit dem Rügabe wert machen, wie soll das in die If, anweisung rein???

Pingulord


3D Gamestudio A7 Extra
Re: Player bewegt sich nur auf einer höhe [Re: Martek] #143011
07/25/07 22:38
07/25/07 22:38
Joined: Jan 2002
Posts: 4,225
Germany / Essen
Uhrwerk Offline
Expert
Uhrwerk  Offline
Expert

Joined: Jan 2002
Posts: 4,225
Germany / Essen
Okokok... das mit der Gravitation hast Du ja schon hinbekommen. Der Gravitation einen positiven Wert zu geben anstatt eines negativen sollte ja auch kein Problem sein. Deine Funktion zum ermittlen des Abstandes des Players zum Boden könnte so aussehen:
Code:
function getPlayerHeight()
{
/* Erstmal eine lokale Variable anlegen, damit wir den Wert schrittweise berechnen können... */
var GroundDist;
/* Wie weit ist das Zentrum des Players vom Boden entfernt? */
GroundDist = c_trace(my.x,vector(my.x,my.y,my.z - 512),IGNORE_PASSABLE + IGNORE_PASSENTS + IGNORE_SPRITES);
/* Von dem Wert ziehen wir die Distanz des Playerszentrums von seinen Füßen ab. */
vec_for_min(my.min_x,me);
GroundDist += my.min_z;
/* Jetzt haben wir die Distanz und müssen sie noch zurückgeben.*/
return(GroundDist);
}


Das geht natürlich effektiver und schneller, aber so ist es zum Lernen glaube ich erstmal ganz verständlich. Diese Funktion rufst Du dann in deiner Player Aktion auf und erhälst den Wert den der Player über dem Boden ist zurück. Ist der größer 0 wendest Du die Gravitation an. Ist er kleiner 0, dann wendest Du die Antigravitation an, die den Player wieder aus dem Boden drückt.


Always learn from history, to be sure you make the same mistakes again...
Re: Player bewegt sich nur auf einer höhe [Re: Uhrwerk] #143012
07/26/07 09:03
07/26/07 09:03
Joined: Jul 2007
Posts: 288
Germany, NRW
Martek Offline OP
Member
Martek  Offline OP
Member

Joined: Jul 2007
Posts: 288
Germany, NRW
Cool, das habe ich jetzt alles vestanden. Ich probier es gleich mal aus.

Nur noch eine Frage. Die 512 ist doch jetzt vorgegeben. Wenn ich jetzt eine kleiner oder größere Figur hätte, müsste da doch ne andere Zahl rein oder?

So hab den Code ausprobiert. Nur der Spieler Steck irgendwie immer im Boden. Es klappt net so ganz. Muss ich vielleicht noch irgendein fein Tuning machen?

Vielen Dank, Pingulord

Last edited by Pingulord; 07/26/07 10:05.

3D Gamestudio A7 Extra
Re: Player bewegt sich nur auf einer höhe [Re: Martek] #143013
07/26/07 11:25
07/26/07 11:25
Joined: Jan 2002
Posts: 4,225
Germany / Essen
Uhrwerk Offline
Expert
Uhrwerk  Offline
Expert

Joined: Jan 2002
Posts: 4,225
Germany / Essen
Die 512 ist einfach die Tiefe, die vom Player Zentrum aus nach unten gesucht wird um den Boden zu finden und rein willkürlich von mir gewählt. Wenn dein Player größere Distanzen nach unten fallen soll, dann musst du sie erhöhen. Mit der Playergröße hat das nichts zu tun. (Es sei denn Dein Player ist größer als 512 Quants...)

Ob Du noch Feintuning machen musst weiss ich nicht... Aber im Zweifelsfall hilft es immer mal den Code zu posten...


Always learn from history, to be sure you make the same mistakes again...
Re: Player bewegt sich nur auf einer höhe [Re: Uhrwerk] #143014
07/26/07 11:31
07/26/07 11:31
Joined: Jul 2007
Posts: 288
Germany, NRW
Martek Offline OP
Member
Martek  Offline OP
Member

Joined: Jul 2007
Posts: 288
Germany, NRW
Jo ok,

hier ist mein player-code. Er ist zwar noch net fertig, aber ich kann schon laufen:D

action player_
{
player = me;
var leben = 100;
var stärke = 10;
var verteidigung = 10;
var erfahrung = 0;

while(leben > 0)
{
camera.x = player.x - 200 * cos(player.pan);
camera.y = player.y - 200 * sin(player.pan);
camera.z = player.z + 150;
camera.pan = player.pan;
camera.tilt = - 25;

gravity();

my.pan += 8 * (key_a - key_d) * time - 20 * mouse_force.x * time;

if(key_w == 1)
{
if(key_shift == 1)
{
c_move(me, vector(15 * time,0,GroundDist), nullvector, glide);
ent_cycle("run", my.skill20);
my.skill20 += 8 * time;
if (my.skill20 > 100) { my.skill20 = 0; }
}
else
{
c_move(me, vector(7 * time,0,GroundDist), nullvector, glide);
ent_cycle("walk", my.skill20);
my.skill20 += 6 * time;
if (my.skill20 > 100) { my.skill20 = 0; }

}
}
else
{
c_move(me, nullvector, nullvector, glide);
ent_cycle("stand", my.skill21);
my.skill21 += 2 * time;
if (my.skill21 > 100) { my.skill21 = 0; }
}
wait(1);
}
}

So und das ist die gravity function:

function gravity()
{

GroundDist = c_trace(my.x,vector(my.x,my.y,my.z - 512),IGNORE_PASSABLE + IGNORE_PASSENTS + IGNORE_SPRITES);
vec_for_min(my.min_x, me);
GroundDist += my.min_z;
return(GroundDist);
}

Ich hoffe ihr könnt mir weiter helfen,

Pingulord


3D Gamestudio A7 Extra
Re: Player bewegt sich nur auf einer höhe [Re: Martek] #143015
07/26/07 11:39
07/26/07 11:39
Joined: Jan 2002
Posts: 4,225
Germany / Essen
Uhrwerk Offline
Expert
Uhrwerk  Offline
Expert

Joined: Jan 2002
Posts: 4,225
Germany / Essen
Du bringst da noch ein paar Sachen durcheinander... GroundDIst ist eine lokale Variable der Funktion gravity. Du darfst sie nur darin benutzen. Ausserdem rufst Du die Funktion Gravity auf, aber das ergebnis was sie zurückliefert speicherst Du nicht. Ändere mal folgendes ab:


var MyGroundDist;
MyGroundDist = gravity();


Und später in den Vektor() Anweisungen ersetzt Du GroundDist durch MyGroundDist. Das wird dann nicht sehr schön aussehen in Bewegung, aber es sollte erstmal funtionieren...


Always learn from history, to be sure you make the same mistakes again...
Re: Player bewegt sich nur auf einer höhe [Re: Uhrwerk] #143016
07/26/07 12:11
07/26/07 12:11
Joined: Jul 2007
Posts: 288
Germany, NRW
Martek Offline OP
Member
Martek  Offline OP
Member

Joined: Jul 2007
Posts: 288
Germany, NRW
Ich hatte die Var GroundDist als globale Variable abegspreichert.

Bringt das nicht das selbe???

Mfg, Pingulord


3D Gamestudio A7 Extra
Re: Player bewegt sich nur auf einer höhe [Re: Martek] #143017
07/26/07 12:53
07/26/07 12:53
Joined: Jan 2002
Posts: 4,225
Germany / Essen
Uhrwerk Offline
Expert
Uhrwerk  Offline
Expert

Joined: Jan 2002
Posts: 4,225
Germany / Essen
Doch, dann ist es das selbe. Versuch mal bitte ein Minus in den Vektor Anweisungen vor dem GroundDist. Also zum Beispiel:

c_move(me, vector(7 * time,0,-GroundDist), nullvector, glide);


Always learn from history, to be sure you make the same mistakes again...
Page 2 of 3 1 2 3

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