Difference between revisions of "Game Programming Class3"

esse quam videri
Jump to: navigation, search
(Homework)
m (Text replacement - "</csharp>" to "</syntaxhighlight>")
Line 34: Line 34:
 
         #endif
 
         #endif
 
          
 
          
</csharp>
+
</syntaxhighlight>
  
 
Angle Measured in Radians
 
Angle Measured in Radians
Line 62: Line 62:
 
public Vector3 Direction = new Vector3(1, 0, 0);
 
public Vector3 Direction = new Vector3(1, 0, 0);
 
     public float Speed = 5;
 
     public float Speed = 5;
</csharp>
+
</syntaxhighlight>
 
Update
 
Update
 
<csharp>
 
<csharp>
Line 70: Line 70:
 
         this.transform.position += this.Direction * this.Speed * Time.deltaTime;
 
         this.transform.position += this.Direction * this.Speed * Time.deltaTime;
 
}
 
}
</csharp>
+
</syntaxhighlight>
  
 
Full Script with wall bouncing
 
Full Script with wall bouncing
Line 137: Line 137:
 
}
 
}
 
}
 
}
</csharp>
+
</syntaxhighlight>
  
 
and Input from keyboard
 
and Input from keyboard
Line 190: Line 190:
 
}
 
}
 
}
 
}
</csharp>
+
</syntaxhighlight>
  
 
==Homework==
 
==Homework==

Revision as of 18:28, 25 January 2016

Class 3 Input Handling

Inclass Keyboard input demo

KeyboardState keyboardState = Keyboard.GetState();

Explore Limitations of Built in Keyboard state.

Input

input from Game Controller and Keyboard

GamePad XBoxGamePadWithLabels.png

XNA has built in support for up to 4 game controllers. The default controller is a x-box controller. X-Box Controller The Controller is accessed through the GamePad Object and the GamePadState Structure reference types <csharp>

        //Get an instance of the gamePadState Structure
        GamePadState gamePad1State = GamePad.GetState(PlayerIndex.One); 
        

/*Since the Keyboard structure is Windows only we need to use some preprocessor directives to only compile the KeyBoard state code if the target is not XBOX360 (I should also add zune if this is one of our build targets)

  • /
        #if !XBOX360
           #region KeyBoard
           KeyboardState keyboardState = Keyboard.GetState();
        #endif
        

</syntaxhighlight>

Angle Measured in Radians

using atan2 to get the angle from the direction vector


IntroSimpleSpriteUpdateRotateWindows Project

SpriteJump Project

Input Error missing DirectX9

Error:An unhandled exception of type 'System.DllNotFoundException' occurred in SharpDX.XInput.dll Additional information: Unable to load DLL 'xinput1_3.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E)

  XInput library may be missing if you have a fresh install of win8.1 or 10

Solution: Install DirectX 9 Runtime http://www.microsoft.com/en-us/download/confirmation.aspx?id=8109 or http://www.microsoft.com/en-us/download/details.aspx?id=35

Unity Basics and Movement

Demo add Art and setup folders

Movement script

parameter <csharp> public Vector3 Direction = new Vector3(1, 0, 0);

   public float Speed = 5;

</syntaxhighlight> Update <csharp> void Update () {

       //Move Pacman
       this.transform.position += this.Direction * this.Speed * Time.deltaTime;

} </syntaxhighlight>

Full Script with wall bouncing <csharp> using UnityEngine; using System.Collections;

public class SimpleMove : MonoBehaviour {


   public Vector3 Direction = new Vector3(1, 0, 0);
   public float Speed = 5;
   static Vector3 cameraBottomLeft; //calculate camera left
   static Vector3 cameraTopRight; //calculate camera top
   static Rect cameraRect; //rectangle for camera


   // Use this for initialization

void Start () {

       cameraBottomLeft = Camera.main.ScreenToWorldPoint(Vector3.zero);
       cameraTopRight = Camera.main.ScreenToWorldPoint(new Vector3(
           Camera.main.pixelWidth, Camera.main.pixelHeight));
       cameraRect = new Rect(
           cameraBottomLeft.x,
           cameraBottomLeft.y,
           cameraTopRight.x - cameraBottomLeft.x,
           cameraTopRight.y - cameraBottomLeft.y);

}

// Update is called once per frame void Update () {

       //Move Pacman
       this.transform.position += this.Direction * this.Speed * Time.deltaTime;
       if (!cameraRect.Contains(this.transform.position))
       {
           //keep  on screen
           if (this.transform.position.x <= cameraRect.xMin)
           {
               
               this.Direction.x *= -1;
           }
           if (this.transform.position.x >= cameraRect.xMax)
           {
               
               this.Direction.x *= -1;
           }
           if (this.transform.position.y > cameraRect.yMax)
           {
               
               this.Direction.y *= -1;
           }
           if (this.transform.position.y < cameraRect.yMin)
           {
               
               this.Direction.y *= -1;
           }
           
       }

} } </syntaxhighlight>

and Input from keyboard <csharp> using UnityEngine; using System.Collections;

public class SimpleInput : MonoBehaviour {


   public Vector3 Direction;
   public float Speed;
   public Vector3 keyDirection;
   
   // Use this for initialization

void Start () {

}

// Update is called once per frame void Update () {

       //input
       //direction.x = direction.y = 0;
       keyDirection.x = keyDirection.y = 0;
       //Keyboard
       if (Input.GetKey("right"))
       {
           keyDirection.x += 1;
       }
       if (Input.GetKey("left"))
       {
           keyDirection.x += -1;
       }
       if (Input.GetKey("up"))
       {
           keyDirection.y += 1;
       }
       if (Input.GetKey("down"))
       {
           keyDirection.y += -1;
       }
       Direction += keyDirection;
       Direction.Normalize();


       //Move Pacman
       this.transform.position += this.Direction * this.Speed * Time.deltaTime;

} } </syntaxhighlight>

Homework

Moving Game 2 Interesting movement (Mono Game and Unity)

Update your moving assigment to make the movement more interesting. Use more than 1 input method ie Keyboard, xbox controller, mouse etc.

Create a Unity Scene with the same sprite and use a script to create similar movement.

Commit the mongame project and an export of the Unity Scene as a package to SVN or Moodle.

Repo URL https://iam.colum.edu:8443/svn/GPMonogame3/trunk/SP15