Browse Source

fixed confusion in your_first_game tutorial (#1549)

* resolved PR merge conflicts

* removed line 769 to avoid confusion and added additional information in line 729

* changed '&' to ',and' on line 729

* changed '&' to ',and' on line 729

* changed '&' to ',and' on line 729

* Revert "removed line 769 to avoid confusion and added additional information in line 729"

This reverts commit aa344ba0d9ecab7825d94ed11727318977317641.

* changed '&' to ',and' on line 729
Mrwan Ashraf 7 years ago
parent
commit
ca02bab180
1 changed files with 37 additions and 32 deletions
  1. 37 32
      getting_started/step_by_step/your_first_game.rst

+ 37 - 32
getting_started/step_by_step/your_first_game.rst

@@ -140,7 +140,7 @@ node, so we'll add a script. Click the ``Player`` node and click the
 In the script settings window, you can leave the default settings alone. Just
 In the script settings window, you can leave the default settings alone. Just
 click "Create":
 click "Create":
 
 
-.. note:: If you're creating a C# script or other languages, select the 
+.. note:: If you're creating a C# script or other languages, select the
             language from the `language` drop down menu before hitting create.
             language from the `language` drop down menu before hitting create.
 
 
 .. image:: img/attach_node_window.png
 .. image:: img/attach_node_window.png
@@ -157,14 +157,14 @@ Start by declaring the member variables this object will need:
 
 
     export (int) var speed  # How fast the player will move (pixels/sec).
     export (int) var speed  # How fast the player will move (pixels/sec).
     var screensize  # Size of the game window.
     var screensize  # Size of the game window.
- 
+
  .. code-tab:: csharp
  .. code-tab:: csharp
 
 
     public class Player : Area2D
     public class Player : Area2D
     {
     {
-        [Export] 
+        [Export]
         public int Speed = 0; // How fast the player will move (pixels/sec).
         public int Speed = 0; // How fast the player will move (pixels/sec).
-        
+
         private Vector2 _screenSize; // Size of the game window.
         private Vector2 _screenSize; // Size of the game window.
     }
     }
 
 
@@ -179,7 +179,7 @@ the ``Player`` node and set the speed property to ``400``.
 
 
 .. image:: img/export_variable.png
 .. image:: img/export_variable.png
 
 
-The ``_ready()`` function is called when a node enters the scene tree, 
+The ``_ready()`` function is called when a node enters the scene tree,
 which is a good time to find the size of the game window:
 which is a good time to find the size of the game window:
 
 
 .. tabs::
 .. tabs::
@@ -193,7 +193,7 @@ which is a good time to find the size of the game window:
     public override void _Ready()
     public override void _Ready()
     {
     {
         _screenSize = GetViewport().GetSize();
         _screenSize = GetViewport().GetSize();
-    }   
+    }
 
 
 Now we can use the ``_process()`` function to define what the player will do.
 Now we can use the ``_process()`` function to define what the player will do.
 ``_process()`` is called every frame, so we'll use it to update
 ``_process()`` is called every frame, so we'll use it to update
@@ -241,19 +241,19 @@ or ``false`` if it isn't.
         if (Input.IsActionPressed("ui_right")) {
         if (Input.IsActionPressed("ui_right")) {
             velocity.x += 1;
             velocity.x += 1;
         }
         }
-    
+
         if (Input.IsActionPressed("ui_left")) {
         if (Input.IsActionPressed("ui_left")) {
             velocity.x -= 1;
             velocity.x -= 1;
         }
         }
-    
+
         if (Input.IsActionPressed("ui_down")) {
         if (Input.IsActionPressed("ui_down")) {
             velocity.y += 1;
             velocity.y += 1;
         }
         }
-    
+
         if (Input.IsActionPressed("ui_up")) {
         if (Input.IsActionPressed("ui_up")) {
             velocity.y -= 1;
             velocity.y -= 1;
         }
         }
-    
+
         var animatedSprite = (AnimatedSprite) GetNode("AnimatedSprite");
         var animatedSprite = (AnimatedSprite) GetNode("AnimatedSprite");
         if (velocity.Length() > 0) {
         if (velocity.Length() > 0) {
             velocity = velocity.Normalized() * Speed;
             velocity = velocity.Normalized() * Speed;
@@ -261,7 +261,7 @@ or ``false`` if it isn't.
         } else {
         } else {
             animatedSprite.Stop();
             animatedSprite.Stop();
         }
         }
-    }   
+    }
 
 
 We check each input and add/subtract from the ``velocity`` to obtain a
 We check each input and add/subtract from the ``velocity`` to obtain a
 total direction. For example, if you hold ``right`` and ``down`` at
 total direction. For example, if you hold ``right`` and ``down`` at
@@ -282,7 +282,7 @@ AnimatedSprite animation.
 
 
 .. tip:: ``$`` returns the node at the relative path from this node, or returns ``null`` if the node is not found.
 .. tip:: ``$`` returns the node at the relative path from this node, or returns ``null`` if the node is not found.
          Since AnimatedSprite is a child of the current node, we can use ``$AnimatedSprite``.
          Since AnimatedSprite is a child of the current node, we can use ``$AnimatedSprite``.
-         
+
          ``$`` is shorthand for ``get_node()``.
          ``$`` is shorthand for ``get_node()``.
          So in the code above, ``$AnimatedSprite.play()`` is the same as ``get_node("AnimatedSprite").play()``.
          So in the code above, ``$AnimatedSprite.play()`` is the same as ``get_node("AnimatedSprite").play()``.
 
 
@@ -335,7 +335,7 @@ Let's place this code at the end of our ``_process()`` function:
         elif velocity.y != 0:
         elif velocity.y != 0:
             $AnimatedSprite.animation = "up"
             $AnimatedSprite.animation = "up"
             $AnimatedSprite.flip_v = velocity.y > 0
             $AnimatedSprite.flip_v = velocity.y > 0
- 
+
  .. code-tab:: csharp
  .. code-tab:: csharp
 
 
         if (velocity.x != 0) {
         if (velocity.x != 0) {
@@ -354,7 +354,7 @@ starts:
 
 
 .. tabs::
 .. tabs::
  .. code-tab:: gdscript GDScript
  .. code-tab:: gdscript GDScript
-    
+
     hide()
     hide()
 
 
  .. code-tab:: csharp
  .. code-tab:: csharp
@@ -377,7 +377,7 @@ Add the following at the top of the script, after ``extends Area2d``:
 
 
  .. code-tab:: csharp
  .. code-tab:: csharp
 
 
-    [Signal] 
+    [Signal]
     public delegate void Hit();
     public delegate void Hit();
 
 
 This defines a custom signal called "hit" that we will have our player
 This defines a custom signal called "hit" that we will have our player
@@ -415,7 +415,7 @@ Add this code to the function:
     {
     {
         Hide(); // Player disappears after being hit.
         Hide(); // Player disappears after being hit.
         EmitSignal("Hit");
         EmitSignal("Hit");
-        
+
         // For the sake of this example, but it's better to create a class var
         // For the sake of this example, but it's better to create a class var
         // then assign the variable inside _Ready()
         // then assign the variable inside _Ready()
         var collisionShape2D = (CollisionShape2D) GetNode("CollisionShape2D");
         var collisionShape2D = (CollisionShape2D) GetNode("CollisionShape2D");
@@ -444,7 +444,7 @@ the player when starting a new game.
     {
     {
         Position = pos;
         Position = pos;
         Show();
         Show();
-        
+
         var collisionShape2D = (CollisionShape2D) GetNode("CollisionShape2D");
         var collisionShape2D = (CollisionShape2D) GetNode("CollisionShape2D");
         collisionShape2D.Disabled = false;
         collisionShape2D.Disabled = false;
     }
     }
@@ -490,7 +490,7 @@ We'll select one of these animations randomly so that the mobs will have some va
 
 
 .. image:: img/mob_animations.gif
 .. image:: img/mob_animations.gif
 
 
-``fly`` should be set to 3 FPS, with ``swim`` and ``walk`` set to 4 FPS. 
+``fly`` should be set to 3 FPS, with ``swim`` and ``walk`` set to 4 FPS.
 
 
 Like the player images, these mob images need to be scaled down. Set the
 Like the player images, these mob images need to be scaled down. Set the
 ``AnimatedSprite``'s ``Scale`` property to ``(0.75, 0.75)``.
 ``AnimatedSprite``'s ``Scale`` property to ``(0.75, 0.75)``.
@@ -517,10 +517,10 @@ Add a script to the ``Mob`` and add the following member variables:
 
 
     public class Mob : RigidBody2D
     public class Mob : RigidBody2D
     {
     {
-        [Export] 
+        [Export]
         public int MinSpeed = 150; // Minimum speed range.
         public int MinSpeed = 150; // Minimum speed range.
 
 
-        [Export] 
+        [Export]
         public int MaxSpeed = 250; // Maximum speed range.
         public int MaxSpeed = 250; // Maximum speed range.
 
 
         private String[] _mobTypes = {"walk", "swim", "fly"};
         private String[] _mobTypes = {"walk", "swim", "fly"};
@@ -532,7 +532,7 @@ at the same speed). Set them to ``150`` and ``250`` in the Inspector. We
 also have an array containing the names of the three animations, which
 also have an array containing the names of the three animations, which
 we'll use to select a random one.
 we'll use to select a random one.
 
 
-Now let's look at the rest of the script. In ``_ready()`` we randomly 
+Now let's look at the rest of the script. In ``_ready()`` we randomly
 choose one of the three animation types:
 choose one of the three animation types:
 
 
 .. tabs::
 .. tabs::
@@ -546,7 +546,7 @@ choose one of the three animation types:
     public override void _Ready()
     public override void _Ready()
     {
     {
         var animatedSprite = (AnimatedSprite) GetNode("AnimatedSprite");
         var animatedSprite = (AnimatedSprite) GetNode("AnimatedSprite");
-    
+
         // C# doesn't implement GDScript's random methods, so we use 'Random'
         // C# doesn't implement GDScript's random methods, so we use 'Random'
         // as an alternative.
         // as an alternative.
         //
         //
@@ -615,7 +615,7 @@ Spawning Mobs
 
 
 The Main node will be spawning new mobs, and we want them to appear at a
 The Main node will be spawning new mobs, and we want them to appear at a
 random location on the edge of the screen. Add a :ref:`Path2D <class_Path2D>` node named
 random location on the edge of the screen. Add a :ref:`Path2D <class_Path2D>` node named
-``MobPath`` as a child of ``Main``. When you select ``Path2D``, 
+``MobPath`` as a child of ``Main``. When you select ``Path2D``,
 you will see some new buttons at the top of the editor:
 you will see some new buttons at the top of the editor:
 
 
 .. image:: img/path2d_buttons.png
 .. image:: img/path2d_buttons.png
@@ -661,7 +661,7 @@ instance.
 
 
     public class Main : Node
     public class Main : Node
     {
     {
-        [Export] 
+        [Export]
         public PackedScene Mob;
         public PackedScene Mob;
 
 
         public int Score = 0;
         public int Score = 0;
@@ -709,7 +709,7 @@ function to set everything up for a new game:
         //timers
         //timers
         var mobTimer = (Timer) GetNode("MobTimer");
         var mobTimer = (Timer) GetNode("MobTimer");
         var scoreTimer = (Timer) GetNode("ScoreTimer");
         var scoreTimer = (Timer) GetNode("ScoreTimer");
-    
+
         scoreTimer.Stop();
         scoreTimer.Stop();
         mobTimer.Stop();
         mobTimer.Stop();
     }
     }
@@ -717,16 +717,16 @@ function to set everything up for a new game:
     public void NewGame()
     public void NewGame()
     {
     {
         Score = 0;
         Score = 0;
-    
+
         var player = (Player) GetNode("Player");
         var player = (Player) GetNode("Player");
         var startTimer = (Timer) GetNode("StartTimer");
         var startTimer = (Timer) GetNode("StartTimer");
         var startPosition = (Position2D) GetNode("StartPosition");
         var startPosition = (Position2D) GetNode("StartPosition");
-        
+
         player.Start(startPosition.Position);
         player.Start(startPosition.Position);
         startTimer.Start();
         startTimer.Start();
     }
     }
 
 
-Now connect the ``timeout()`` signal of each of the Timer nodes.
+Now connect the ``timeout()`` signal of each of the Timer nodes (``StartTimer``, ``ScoreTimer`` ,and ``MobTimer``).
 ``StartTimer`` will start the other two timers. ``ScoreTimer`` will
 ``StartTimer`` will start the other two timers. ``ScoreTimer`` will
 increment the score by 1.
 increment the score by 1.
 
 
@@ -747,7 +747,7 @@ increment the score by 1.
         //timers
         //timers
         var mobTimer = (Timer) GetNode("MobTimer");
         var mobTimer = (Timer) GetNode("MobTimer");
         var scoreTimer = (Timer) GetNode("ScoreTimer");
         var scoreTimer = (Timer) GetNode("ScoreTimer");
-    
+
         mobTimer.Start();
         mobTimer.Start();
         scoreTimer.Start();
         scoreTimer.Start();
     }
     }
@@ -766,6 +766,11 @@ well as its position.
 Note that a new instance must be added to the scene using
 Note that a new instance must be added to the scene using
 ``add_child()``.
 ``add_child()``.
 
 
+Now click on ``MobTimer`` in the scene window then head to inspector window,
+switch to node view then click on ``timeout()`` and connect the signal.
+
+Add the following code:
+
 .. tabs::
 .. tabs::
  .. code-tab:: gdscript GDScript
  .. code-tab:: gdscript GDScript
 
 
@@ -928,7 +933,7 @@ Now add this script to ``HUD``:
 
 
     public class HUD : CanvasLayer
     public class HUD : CanvasLayer
     {
     {
-        [Signal] 
+        [Signal]
         public delegate void StartGame();
         public delegate void StartGame();
     }
     }
 
 
@@ -949,7 +954,7 @@ has been pressed.
     {
     {
         var messageTimer = (Timer) GetNode("MessageTimer");
         var messageTimer = (Timer) GetNode("MessageTimer");
         var messageLabel = (Label) GetNode("MessageLabel");
         var messageLabel = (Label) GetNode("MessageLabel");
-    
+
         messageLabel.Text = text;
         messageLabel.Text = text;
         messageLabel.Show();
         messageLabel.Show();
         messageTimer.Start();
         messageTimer.Start();
@@ -1023,7 +1028,7 @@ Connect the ``timeout()`` signal of ``MessageTimer`` and the
     {
     {
         var startButton = (Button) GetNode("StartButton");
         var startButton = (Button) GetNode("StartButton");
         startButton.Hide();
         startButton.Hide();
-    
+
         EmitSignal("StartGame");
         EmitSignal("StartGame");
     }
     }