Author Topic: Cylinder Game  (Read 4406 times)

0 Members and 1 Guest are viewing this topic.

Jejerk

  • Thug
  • *
  • Posts: 35
Cylinder Game
« on: July 12, 2006, 01:54:58 PM »
Hello! Je commence un projet qui m'a été proposé par JeGX: des cylindres disposés sur un plan vertical, une balle se déplaçant de gauche à droite en dessus des cylindres, en appuyant sur une touche, la balle tombe et rebondit sur les cylindres jusqu'à arriver au point 0. Un petit screen pour mieux visualiser




Je crée ce post pour poser toutes mes questions relatives à cette scène, et la première sera: quel est la meilleure solution pour le déplacement horizontal de la sphère?


P.S: le nom ainsi que l'aspect graphique ne sont pas finalisés  :lol: (et il y aura plus de cylindres)

JeGX

  • Global Moderator
  • Capo Crimine
  • *****
  • Posts: 2385
    • oZone3D.Net
Cylinder Game
« Reply #1 on: July 14, 2006, 08:37:32 AM »
yeah cool! Un jeu!!

Pour deplacer ta sphere, un petit script lua sera la meilleur solution:

Code: [Select]

HYP_Object.setPosition( "sphere_name", x, Y, Z)


la variable x est comprise entre une valeur min (ex: -50.0) et une valeur max (ex: 50.0) et à chaque frame tu augmentes (ou diminues en fonction du sens) cette variable x d'une petite quantité. Y et Z sont contants.

Jejerk

  • Thug
  • *
  • Posts: 35
Cylinder Game
« Reply #2 on: July 14, 2006, 06:18:57 PM »
Oula alors je me lance dans le LUA.... j'ai donc créé un script qui donne

Code: [Select]
HYP_Object.setPosition( "Sphere", -10, 200, 0) ;
HYP_Object.setPosition( "Sphere", -20, 200, 0) ;
HYP_Object.setPosition( "Sphere", -30, 200, 0) ;
HYP_Object.setPosition( "Sphere", -40, 200, 0) ;
HYP_Object.setPosition( "Sphere", -50, 200, 0) ;
HYP_Object.setPosition( "Sphere", -40, 200, 0) ;
HYP_Object.setPosition( "Sphere", -30, 200, 0) ;
HYP_Object.setPosition( "Sphere", -20, 200, 0) ;
HYP_Object.setPosition( "Sphere", -10, 200, 0) ;
HYP_Object.setPosition( "Sphere", 0, 200, 0) ;


et intégré le script dans Hyperion comme ceci

Code: [Select]
<script name="sphere_script" filename="scripts/sphere_position.lua" />


Je sais pas, c'est peut-être tout faux mais j'ai fait comme je pouvais  :oops:

Mais maintenant message d'erreur à l'ouverture de la scène qui me dit "Script [sphere_script] has a runtime error: [[string "sphere_script"]:1: attempt to call field 'setPosition' (a nil value)]. Script disabled."

JeGX

  • Global Moderator
  • Capo Crimine
  • *****
  • Posts: 2385
    • oZone3D.Net
Cylinder Game
« Reply #3 on: July 14, 2006, 07:05:09 PM »
Moi je pensais plutot à un code du genre:

Code: [Select]

<script name="update_scene" run_mode="INIT" >
<raw_data><![CDATA[

g_speed = 0.1;
g_pos_x = 0.0;
g_step_x = g_speed;
g_max_x = 50.0;
g_min_x = -50.0;


]]></raw_data>
</script>


<script name="update_scene" run_mode="EXECUTE_EACH_FRAME" >
<raw_data><![CDATA[

HYP_Object.SetPosition( "sphere_name", g_pos_x, 200.0, 0.0);
g_pos_x = g_pos_x + step_x;

if(g_step_x>0.0 and g_pos_x>g_max_x) then
g_step_x = -g_speed;
end

if( g_step_x<0.0 and g_pos_x<g_min_x) then
g_step_x = g_speed;
end

]]></raw_data>
</script>


où "sphere_name" est le nom de ta sphere. La vitesse de deplacement horizontale est piloté par g_speed. J'ai pas testé le code mais je pense que ca doite etre bon.

Au passage, l'erreur que tu obtiens dans ton script vient de la mauvaise ecriture de setPosition: ca commence avec un S majuscule: HYP_Object.SetPosition().