Gamestudio Links
Zorro Links
Newest Posts
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
1 registered members (M_D), 1,430 guests, and 3 spiders.
Key: Admin, Global Mod, Mod
Newest Members
firatv, wandaluciaia, Mega_Rod, EternallyCurious, howardR
19050 Registered Users
Previous Thread
Next Thread
Print Thread
Rate Thread
"Event" los-lassen #431458
10/16/13 13:03
10/16/13 13:03
Joined: Oct 2008
Posts: 341
R
ratz Offline OP
Senior Member
ratz  Offline OP
Senior Member
R

Joined: Oct 2008
Posts: 341
hallo
ich habe gerade folgendes problem:

nach einer kollision soll die variable wieder auf 1 gehen

dieser code funtioniert nicht frown
Code:
var grav = 1

function my_event() 
{
	 
 if(event_type == EVENT_ENTITY)
 { 
  grav = 0;
  my.tilt += 6*time_step; 
  }
  
  else
  
  {
   grav = 1;	
  }
}

/////////////////////

action event_action() 
{ 		
 my.emask |= (ENABLE_BLOCK | ENABLE_ENTITY); 
 my.event = my_event;
 c_setminmax(my);

 ...
 
 VECTOR vFeet;
 vec_for_min(vFeet,me);
  
 while(1)
 {
 	
  if(grav == 1)
  {
  c_trace(my.x,vector(my.x,my.y,my.z-1000),GLIDE);
  my.z = hit.z - vFeet.z; 
  }
   ...
  wait(1);
 } 
}



wie sage ich das dem script, dass er bei einer "nicht-kollision" bezw nach einer kollision eine function ausführt ?

Code:
if(event_type == NULL) -> klappt auch nicht


Re: "Event" los-lassen [Re: ratz] #431462
10/16/13 13:40
10/16/13 13:40
Joined: Sep 2003
Posts: 6,861
Kiel (Germany)
Superku Offline
Senior Expert
Superku  Offline
Senior Expert

Joined: Sep 2003
Posts: 6,861
Kiel (Germany)
Ich empfehle dir, wenn du dich an einem Movement-Skript versuchen möchtest, folgenden Artikel zu lesen und auch den Code herunterzuladen: http://opserver.de/nwik5/index.php?title=Gravity

Zu deinem Problem:
Du könntest bspw. am Ende oder Anfang (je nach Reihenfolge von c_move und anderen Anweisungen) deiner while Schleife einen Skill auf 0 setzen (jeden Frame also), und diesen im Event auf 1 setzen. Das Event wird natürlich auch nur ausgeführt, wenn eines der Events unter emask eintritt.


"Falls das Resultat nicht einfach nur dermassen gut aussieht, sollten Sie nochmal von vorn anfangen..." - Manual

Check out my new game: Pogostuck: Rage With Your Friends
Re: "Event" los-lassen [Re: Superku] #431495
10/17/13 09:01
10/17/13 09:01
Joined: Oct 2008
Posts: 341
R
ratz Offline OP
Senior Member
ratz  Offline OP
Senior Member
R

Joined: Oct 2008
Posts: 341
ja ich muss über die variable die gravitation abschalten
und wenn ich keine kollision mehr mit einem Entity habe,
soll die variable wieder auf 1 springen ,

das ganze ist immer noch für mein skater,
denn wenn ich die graviation nicht abschalte werdend er die rampe hochfährt,
drückt sich das Board in die rampe//boden und dreht sich dann rauerhaft

so brauche ich nur über die kollision mit hilfe von "my.tilt" und c_move
mich nach vorne bewegen, -> mithilfe von USE_POLYGON wirkt das ganze recht realistisch, was das hochfahren der rampe angeht

das ganze mit physX zu realisireen , wurde mit abgeraten

Re: "Event" los-lassen [Re: ratz] #431507
10/17/13 11:40
10/17/13 11:40
Joined: Sep 2003
Posts: 6,861
Kiel (Germany)
Superku Offline
Senior Expert
Superku  Offline
Senior Expert

Joined: Sep 2003
Posts: 6,861
Kiel (Germany)
Lies dir bitte den Artikel durch, den ich verlinkt habe. Du willst auf keinen Fall (!), dass das Skateboard durchgehend den Boden berührt, sprich die Gravitation mittels c_move-Kollisionen realisieren. Stattdessen soll die Entity stets einen gewissen Abstand über dem Boden schweben (natürlich nicht der sichtbare Teil, sondern die Bounding Box des Skateboards/ Skaters).

Und ja, mit physX würde das wahrscheinlich eher nichts.


"Falls das Resultat nicht einfach nur dermassen gut aussieht, sollten Sie nochmal von vorn anfangen..." - Manual

Check out my new game: Pogostuck: Rage With Your Friends
Re: "Event" los-lassen [Re: Superku] #431509
10/17/13 11:51
10/17/13 11:51
Joined: Oct 2008
Posts: 341
R
ratz Offline OP
Senior Member
ratz  Offline OP
Senior Member
R

Joined: Oct 2008
Posts: 341
ich habs mir angeguckt , und versucht einzubinden ...
egal irgentwie war das deck immer am schweben

ich hab es jetzt geschafft wink !!!

-> gravitation
-> rampe hochfahren
-> rampe runterfahren
-> wenn man unten ist, ist das board wieder gerade

-> und das gleiche rückwärts ...

so gehts: skater fährt ...
skater trifft auf rampe, schaltet gravitation ab
solange kollision ist, drehe baord hoch und wird weiter bewegt
ab höhe = 180, schaltet der script um so das man rückwärts fährt
und rückwärts wird das board gedreht
-> um unten über die rampe zu kommen, wird das deck wieder gerade
gestellt , und gravitation wird wieder angeschaltet
dabei wird ramp_switch auf 2 geschaltet und das gleiche
passirt, "rückärts"auf der anderen seite...



Code:
///////////////////////////////
// SKATEBOARD-CODE v.1.0     //
//                           //  
// written by Patrick Ratz   //
///////////////////////////////

#include <acknex.h>
#include <default.c>

///////////////////////////////

var skate_move = 1;
var skate_ramp = 0;
var skate_grav = 1;

var ramp_switch = 1;

var i;


ENTITY* skater;

PANEL* my_info=
{
  digits(35, 10, "move = %0.f", *, 1, skate_move);
  digits(35, 19, "ramp = %0.f", *, 1, skate_ramp);
  digits(35, 28, "grav = %0.f", *, 1, skate_grav);
  digits(35, 37, "scha = %0.f", *, 1, ramp_switch);

  flags = SHOW;
}


function main()
{
  vec_set(screen_size,vector(800,400,0));
  vec_set(screen_color,vector(50,1,1)); // dark blue
  vec_set(sky_color,vector(50,1,1)); // dark blue
  video_window(NULL,NULL,0,"My New Game");
  d3d_antialias = 1;
  shadow_stencil = 3;
  
  level_load("skate.wmb");
  
}

//////////////////////////////////////////////

function skate_event();

action Skater() 
{
  		
  skater = my;
  skater.pan = my.pan;
  skater.roll = my.roll;
  skater.tilt = my.tilt;
  
  my.emask |= (ENABLE_BLOCK | ENABLE_ENTITY); 
  my.event = skate_event;
  
  c_setminmax(my);
  
   VECTOR vFeet;
  vec_for_min(vFeet,me); 	 	
	
	while(1)
	{
		
	

  	 if(skate_grav == 1)
  	 {
  	 c_trace(my.x,vector(my.x,my.y,my.z-1000),USE_POLYGON);
    my.z = hit.z - vFeet.z;
    }
      
  	 if(my.z > 180 && skate_ramp == 0) 
    {
  	  skate_ramp = 1; // move back !!
    }
    
    
    if(my.z > 180 && skate_ramp == 1 && ramp_switch == 2) // again , agian ;-)..
    {
  	  skate_ramp = 0; // move front !!
     
    }
   
   
   //vorwärts
   if(skate_move == 1 && skate_ramp == 0 )
   {
    c_move(my,vector(5*time_step,0,0),nullvector,USE_POLYGON);    
   }
   
   //rückwärts//
   if(skate_ramp == 1 && skate_move == 1)
   {
    c_move(my,vector(-5*time_step,0,0),nullvector,USE_POLYGON);    
   }
   
   
   //
      
   wait(1);
  }
}


function skate_event() 
{

 
 // is on the ramp -> drive realistic up
 if(event_type == EVENT_ENTITY && skate_ramp == 0)    
 { 
  my.tilt += 5*time_step; 
  skate_grav = 0;
 } 
 
 // is down the ramp -> drive realistic down    
 if(event_type == EVENT_ENTITY && skate_ramp == 1)    
 { 
  my.tilt -= 5*time_step; 
  skate_grav = 0;
 }
 
 
 // is on the ground -> need for "over the ramp (under)" to the ground 
 if(event_type == EVENT_BLOCK && skate_ramp == 1)    
 { 
  my.tilt = 0;   
  skate_grav = 1;
  ramp_switch = 2;
 } 
 
 if(event_type == EVENT_BLOCK && ramp_switch == 2)    
 { 
  my.tilt = 0;   
  skate_grav = 1;
   } 
}


Re: "Event" los-lassen [Re: ratz] #431510
10/17/13 11:53
10/17/13 11:53
Joined: Oct 2008
Posts: 341
R
ratz Offline OP
Senior Member
ratz  Offline OP
Senior Member
R

Joined: Oct 2008
Posts: 341
das springen wird später eingebunden ...


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