0 registered members (),
947
guests, and 5
spiders. |
Key:
Admin,
Global Mod,
Mod
|
|
|
Steuerung von Player
#170409
12/01/07 08:42
12/01/07 08:42
|
Joined: Dec 2006
Posts: 46 Germany
Flo
OP
Newbie
|
OP
Newbie
Joined: Dec 2006
Posts: 46
Germany
|
Hallo Leute, ich hab momentan ein kleines Problem: Ich hab mir ein kleines Skript zur Steuerung des Player programmiert. Jedoch kann er nicht springen. Des weiteren ignoriert er alle Erhebungen. Also wenn er ne Rampe hochgehen soll läuft er im Block herum... Außerdem fällt er nirgendwo herunter , z.B. von einer Plattform... Code:
action player_init() { player = me; while(my != null) { update_views(); //////////////////Player geht vorwärts//////////////////////// if(key_cuu==on) { if(key_cuu==on && key_s==on) { move_forward += 12*time; c_move(me,vector(16*time,0,0),nullvector,GLIDE); ent_animate(me,"run",move_forward,anm_cycle); } else { move_forward += 7*time; c_move(me,vector(10*time,0,0),nullvector,GLIDE); ent_animate(me,"run",move_forward,anm_cycle); } } ////////////////////////////////////////////////////////////// //////////////////Player dreht sich nach rechts/////////////// if(key_cul==on) { my.pan += 1; cam_angle += 1; } ////////////////////////////////////////////////////////////// //////////////////Player dreht sich nach Links//////////////// if(key_cur==on) { my.pan -= 1; cam_angle -= 1; } ////////////////////////////////////////////////////////////// //////////////////Player gehts rückwärts////////////////////// if(key_cud==on) { move_backward += 3*time; c_move(me,vector(10*time,0,0),nullvector,GLIDE); ent_animate(me,"run",move_backward,anm_cycle); } ////////////////////////////////////////////////////////////// //////////////Player-Attacke////////////////////////////////// if(key_w==on) { while(attack_mode<100) { attack_mode += 6*time; ent_animate(me,"attack",attack_mode,anm_cycle); wait(1); } attack_mode=0; } ////////////////////////////////////////////////////////////// /////////////////Player springt/////////////////////////////// if(key_space==on) { temp = my.z; while(stand_mode<100) { if(stand_mode<40) { my.z += 6*time; } else{my.z = temp;} stand_mode += 8*time; ent_animate(me,"jump",stand_mode,anm_cycle); wait(1); } stand_mode = 0; } ////////////////////////////////////////////////////////////// ///////////////Keine Taste ist gedrückt/////////////////////// if(key_any==off) { ent_blend("stand",stand_mode,100); stand_mode += 3*time; ent_animate(me,"stand",stand_mode,anm_cycle); } ////////////////////////////////////////////////////////////// my.anim_perc += 10*time; wait(1); } }
Wäre schön, wenn mr jemand helfen könnte Gruß Flo
|
|
|
Re: Steuerung von Player
[Re: Flo]
#170413
12/02/07 18:25
12/02/07 18:25
|
Joined: Jul 2006
Posts: 73 Saxony, Germany
Flori
Junior Member
|
Junior Member
Joined: Jul 2006
Posts: 73
Saxony, Germany
|
Also bei mir funktioniert es. Schau mal deinen Script durch das da kein Widerspruch ist.
Hier mal mein gesamter Player-Script: action player { my.push = 2; var anim_percentage; var movement_speed; var distance_to_ground; player = my; while (1) { my.pan += 5 * (key_cul - key_cur) * time; vec_set (temp.x, my.x); temp.z -= 5000; distance_to_ground = c_trace (my.x, temp.x, ignore_me | use_box); if(key_cud==on) { movement_speed.x=-18*(key_cud)*time; } else { movement_speed.x=18*(key_cuu)*time; } movement_speed.y = 0; movement_speed.z = - (distance_to_ground - 17); movement_speed.z = max (-35 * time, movement_speed.z); c_move (my, movement_speed.x, nullvector, glide&&ignore_passable); if ((key_cud == off) && (key_cuu == off)) { ent_animate(my, "stand", anim_percentage, anm_cycle); } else { ent_animate(my, "walk", anim_percentage, anm_cycle); } anim_percentage += 13 * time; wait (1); } }
Last edited by Flori; 12/02/07 18:26.
|
|
|
Re: Steuerung von Player
[Re: Flori]
#170414
12/02/07 22:27
12/02/07 22:27
|
Joined: Oct 2004
Posts: 262 Augsburg,Bayern
ARAS
Member
|
Member
Joined: Oct 2004
Posts: 262
Augsburg,Bayern
|
Hi, ich habe Dir einmal eine gravity und eine einfache jump Funktion geschrieben. Ich habe nicht viel kommentiert. Sollte etwas unklar sein melde Dich noch einmal. Es kann sein das Du die c_scan Funktion in der Höhe an Deinen Player anpassen musst. Sollte er nicht ganz auf dem Boden sein oder im Boden stecken. Ich habe auch alle Definitionen angegeben eventuell musst Du andere Skills angeben. Ich habe Dein player Skript bis auf ein paar kleine Veränderungen so gelassen. Hier einmal das Skript: Code:
define anim_perc,skill21; define jumping,skill22; define force_x,skill23; define force_y,skill24; define force_z,skill25; define velocity_x,skill26; define velocity_y,skill27; define velocity_z,skill28; define rel_speed_x,skill30; define rel_speed_y,skill31; define rel_speed_z,skill32; define abs_speed_x,skill33; define abs_speed_y,skill34; define abs_speed_z,skill35; define gravity,skill36;
var friction = 0.7; // Reibung var set_walk;
function handle_gravity() { result = c_trace(vector(my.x,my.y,my.z-15),vector(my.x,my.y,my.z - 1000),use_box | ignore_me | ignore_passable); if (result > 10) // Abstand grösser als 10 Quants { my.force_z -= my.gravity * time_step; if(result > 100) { my.jumping = 2; } } else { if(my.jumping != 0 && result < 0) {my.jumping = 0;} if(my.jumping == 0) // Kein jumping { my.force_z = -0.1 * result; if(key_space == 1) { while (key_space == 1){wait (1);} // Solange Taste gedrückt ist kein jumping my.jumping = 1; my.force_z = 25; // Sprunghöhe } } if(my.jumping == 2) { my.force_z = -0.1 * result; if(my.jumping == 2 && result <= 0){my.jumping = 0;} } } if(result >= 0 && result <= 10 && my.jumping == 2) { my.z -= (result); my.velocity_z = 0; my.force_z = 0; } my.velocity_z = time_step * my.force_z + max(1-time_step * friction,0) * my.velocity_z; my.abs_speed_z = my.velocity_z * time_step; // Absolute Bewegung nach unten }
action player_init() { my.narrow = on; my.gravity = 6; // Anziehungskraft nach unten player = me; while(my != null) { update_views(); if(key_s == on) { set_walk = 16; } else { set_walk = 10; } my.rel_speed_x = set_walk * (key_cuu - key_cud) * time_step; //////////////////Player geht vorwärts//////////////////////// if(key_cuu==on) { if(key_cuu==on && key_s==on) { move_forward += 12*time; //my.force_x += 16 * time_step; //c_move(me,vector(16*time,0,0),nullvector,GLIDE); ent_animate(me,"run",move_forward,anm_cycle); } else { move_forward += 7*time; //my.force_x += 10 * time_step; //c_move(me,vector(10*time,0,0),nullvector,GLIDE); ent_animate(me,"run",move_forward,anm_cycle); } } ////////////////////////////////////////////////////////////// //////////////////Player dreht sich nach rechts/////////////// if(key_cul==on) { my.pan += 10 * time_step; cam_angle += 10 * time_step; } ////////////////////////////////////////////////////////////// //////////////////Player dreht sich nach Links//////////////// if(key_cur==on) { my.pan -= 10 * time_step; cam_angle -= 10 * time_step; } ////////////////////////////////////////////////////////////// //////////////////Player gehts rückwärts////////////////////// if(key_cud==on) { move_backward += 3*time; //my.force_x -= 10 * time_step; //c_move(me,vector(10*time,0,0),nullvector,GLIDE); ent_animate(me,"run",move_backward,anm_cycle); } ////////////////////////////////////////////////////////////// //////////////Player-Attacke////////////////////////////////// if(key_w==on) { while(attack_mode<100) { attack_mode += 6*time; ent_animate(me,"attack",attack_mode,anm_cycle); wait(1); } attack_mode=0; } ////////////////////////////////////////////////////////////// ///////////////Keine Taste ist gedrückt/////////////////////// if(key_any==off) { ent_blend("stand",stand_mode,100); stand_mode += 3*time; ent_animate(me,"stand",stand_mode,anm_cycle); } ////////////////////////////////////////////////////////////// my.anim_perc += 10*time; vec_set(my.abs_speed_x,nullvector); handle_gravity(); c_move(me,my.rel_speed_x,my.abs_speed_x,glide | use_box | ignore_me); wait(1); } } Ich hoffe Du kommst damit klar.
|
|
|
Re: Steuerung von Player
[Re: ARAS]
#170415
12/06/07 20:03
12/06/07 20:03
|
Joined: Nov 2007
Posts: 60
darci
Junior Member
|
Junior Member
Joined: Nov 2007
Posts: 60
|
ich hab ein ziemlich komisches problem also bei mir erkennt er temp garnicht, da kommt immer eine undeclared identifiler meldung weis einer woran das hängen kann?
Last edited by darci; 12/06/07 20:04.
|
|
|
|