Upload
kobkrit-viriyayudhakorn
View
257
Download
1
Embed Size (px)
Citation preview
Lecture 2: C# Programming by Making Gold Miner Game
Dr. Kobkrit ViriyayudhakorniApp Technology Limited
ITS488 (Digital Content Creation with Unity - Game and VR Programming)
Troubleshooting• Confuse? Read a manual at https://docs.unity3d.com/2017.1/
Documentation/Manual/UnityManual.html
• Get any problem? Google it: "DOING ANYTHING in unity"
Review: Writing Code in Unity
Right click at Project Window Name it as "ConsolePrinter"
Start writing a code• Double Click at the ConsolePrinter.cs
• The MonoDevelop-Unity IDE will be show up and you can make the first program.
Code structure
Printing a Text
Save and Go back to Unity
Create a New Game Object
Right click Select
Rename + Enter
Inspect Window on the right.
Attaching Script to A Game Object1. Drag the
ConsolePrinter script and drop onto ConsolePrinterGO in Hierarchy Window
2. Or Drag onto Inspector Window
Start Running
• Click on Run Button
• Switch to Console Window, you will see "Hello World!" text.
Print Statement
Output Console
Variable #1: int
Output Console
Variable #2: int & float & string
Output Console
Variable #3: int & float oper.Output Console
Variable #4: string & bool oper.
Output Console
Type Represents Range Default Value
bool Boolean value True or False FALSE
byte 8-bit unsigned integer 0 to 255 0
char 16-bit Unicode character U +0000 to U +ffff '\0’
decimal 128-bit precise decimal values with 28-29 significant digits
(-7.9 x 1028 to 7.9 x 1028) / 100 to 28 0.0M
double 64-bit double-precision floating point type
(+/-)5.0 x 10-324 to (+/-)1.7 x 10308 0.0D
float 32-bit single-precision floating point type
-3.4 x 1038 to + 3.4 x 1038 0.0F
int 32-bit signed integer type -2,147,483,648 to 2,147,483,647 0
long 64-bit signed integer type -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807
0L
sbyte 8-bit signed integer type -128 to 127 0
short 16-bit signed integer type -32,768 to 32,767 0
uint 32-bit unsigned integer type 0 to 4,294,967,295 0
ulong 64-bit unsigned integer type 0 to 18,446,744,073,709,551,615 0
ushort 16-bit unsigned integer type 0 to 65,535 0
if-else oper.
Output Console
Game Planning• You are a gold miner and you want to find
a gold pit.
• You can move up, down, left, and right.
• Movement is a fixed distance.
• After each turn, your distance from the gold pit is displayed.
• You win when you get the gold pit.
• Your score is how many turns it took.
Rough Pseudo Code• Set Start Location
• Calculate distance from Gold pit.
• Print the distance
• Read player’s move
• Update location from the Gold pit.
• Repeat.
Start Writing a Game Logic
Output Console
If we change loc = 10.3
Output Console
Rough Pseudo Code• Set Start Location
• Calculate distance from Gold pit.
• Print the distance
• Read player’s move
• Update location from the Gold pit.
• Repeat.
Input.GetKeyDown
Reading User Input
Output Console (After press left arrow couple times)
Make sure you select the Game tabBefore pressing the left key. ->
Adding more Keydown
Output Console (After press left+right arrow couple times)
* Make sure you select the Game tabBefore pressing the left key.
Update Location
Output Console
Variable Scope: loc
Scope of loc
Make it class variable
Scope of loc
Move the variable declaration from within"Start()" Method to within "GoldMiner" class.(Outer the "Start()" method)
Output Console
Class variable assignment
• Can not be the product from the computation.
• Can be a constant or not assignment at all.
• You can re-assign the class variable in any function body.
Do Distance Calculation when a key is pressed.
Output Console
Now it is playable!
Too much duplicate code!
• Using a method / function for repeatedly run code.
• Make code much shorter. Easier to manage the code structure.
Function!
• Return nothing, just print the message out.
• Use "void" return type.
• Call it when you want to re-calculate the distance.
• Call it when you want to print out the distance result.
Create calculateDistance Function
Completed Game for 1D world.
Keep pressing right arrow
Programming C# for 2D world
Vectors
X(4,3)
y=3
x=4
(0,0)
Vectors Addition
ab
a+b(0,0)
Vectors Reduction
ab
a+b
-ba-b
(0,0)
Finding Distance of Two Vectors
GoldMiner
(0,0)GoldPit
- Gold Miner + Gold Pit
Objects and Class
Class Car
Class = Template
Object = Product
new
Methods and Attributes
Converting from 1d to 2d
• Using the Vector2 instead of float (Don’t forget the new keyword)
• Update distance to be pathToGoldPit Vector2
• Compute the distance by using Vector2 magnitude property.
• Remove all non make-sense code (written for 1d world).
Converting from 1d to 2d
the magnitude of vector = the length of the vector
Converting from 1d to 2d
Since we could not compare less than and greater than in the Vector2 class,the code in the block need to be removed, otherwise, the complication errors.
Update the location in Vector2
X Y
Testing
Haha! We forgot Up and Down button. We can not win!
Public variables
Inspector Panel All public variable will be debuggable in the Inspector Panel.
You can change the value and see the change in real time!
Exercise I• Implement Up and Down button, so the player can completed the game.
• Starting code is located at https://github.com/kobkrit/vr2017class/blob/master/exercise1.cs
Glossary 1Name Meaning Example
Value Numbers, text, etc. “Hello world”, 3.14f, 1
Type The “shape” of the value. int, float, string
Variable The correctly typed box for the values. int anInteger;
Statement A command to the computer. print("hello")
Expression A command that evaluates to a value.
homeLocation - location"Distance:" + distance
Glossary 2Name Meaning Example
Method A factory which something to input to get output. Input.GetKeyDown(...)
Arguments The inputs to a method KeyCode.RightArrow
Return value The output of a method if(Input.GetKeyDown(...))
OperationLike a method but with an
operator rather than a name. Often ‘infix’.
1 + 2
Glossary 3Name Meaning Example
Object A collection of variables with
values and methods that act on those variables.
The actual house.
Class The blueprint of the variables and methods.
An architect's drawing of a house.
Instantiation The process of making an object from a class. new Vector2(2.0f, 3.0f)
Instance Same as an object. Often used to say “an instance of a class X”.
The actual house according to drawings X.
Homework
• Can we print out the location into the console?
• If we have multiple gold pits?
• If we have traps?
• When an user fells to the traps, GAME OVER!