diff --git a/Assets/Data/Inventory/Tutorial1.asset b/Assets/Data/Inventory/Tutorial1.asset
new file mode 100644
index 0000000..4b381a6
--- /dev/null
+++ b/Assets/Data/Inventory/Tutorial1.asset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:655ef64cdee98ecd6c8f7cb75875072108b55815051571d97361c5f076caaafb
+size 522
diff --git a/Assets/Data/Inventory/Tutorial1.asset.meta b/Assets/Data/Inventory/Tutorial1.asset.meta
new file mode 100644
index 0000000..5d57179
--- /dev/null
+++ b/Assets/Data/Inventory/Tutorial1.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 808f6e35b72adbf47a19927d1f3efd35
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Data/Inventory/Tutorial2.asset b/Assets/Data/Inventory/Tutorial2.asset
new file mode 100644
index 0000000..61e7aff
--- /dev/null
+++ b/Assets/Data/Inventory/Tutorial2.asset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9d51d42988dcad792d1a26c5f4362d573a4c660311e530fb4244d3823c245e9d
+size 522
diff --git a/Assets/Data/Inventory/Tutorial2.asset.meta b/Assets/Data/Inventory/Tutorial2.asset.meta
new file mode 100644
index 0000000..033f106
--- /dev/null
+++ b/Assets/Data/Inventory/Tutorial2.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: d342ea734412a4b40bb6096d5cafc2fb
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Data/Inventory/Tutorial3.asset b/Assets/Data/Inventory/Tutorial3.asset
new file mode 100644
index 0000000..7de2699
--- /dev/null
+++ b/Assets/Data/Inventory/Tutorial3.asset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5b4b715f269c24473655cff17cd3b3a635111b91b4c5581be94c7686a8c18308
+size 633
diff --git a/Assets/Data/Inventory/Tutorial3.asset.meta b/Assets/Data/Inventory/Tutorial3.asset.meta
new file mode 100644
index 0000000..7f2157f
--- /dev/null
+++ b/Assets/Data/Inventory/Tutorial3.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 26baa66216f4923448239677997ac13d
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Data/Inventory/Tutorial4.asset b/Assets/Data/Inventory/Tutorial4.asset
new file mode 100644
index 0000000..a0bb5d4
--- /dev/null
+++ b/Assets/Data/Inventory/Tutorial4.asset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d033311011d9927de9bedbf400dd7f1559bce5b5ebfb78681bfdc37685d9e16b
+size 744
diff --git a/Assets/Data/Inventory/Tutorial4.asset.meta b/Assets/Data/Inventory/Tutorial4.asset.meta
new file mode 100644
index 0000000..c22bcfd
--- /dev/null
+++ b/Assets/Data/Inventory/Tutorial4.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: b06e54ffefee9e549a8e1652d5af07f9
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scripts/Character.cs b/Assets/Scripts/Character.cs
index fa32887..f4f4a4a 100644
--- a/Assets/Scripts/Character.cs
+++ b/Assets/Scripts/Character.cs
@@ -6,182 +6,187 @@ using UnityEngine.SceneManagement;
public class Character : MonoBehaviour
{
- public string nextScene;
+ public string nextScene;
#region Inspector Fields
[SerializeField]
private Inventory startingInventory;
- [SerializeField]
- [Tooltip ("Will move to this block at start, else will try and find a block below")]
- private Block CurrentBlock;
+ [SerializeField]
+ [Tooltip("Will move to this block at start, else will try and find a block below")]
+ private Block CurrentBlock;
- [SerializeField]
- [Tooltip ("Layers to ignore when checking for blocks")]
- private LayerMask Ignore;
+ [SerializeField]
+ [Tooltip("Layers to ignore when checking for blocks")]
+ private LayerMask Ignore;
[Tooltip("Current Inventory of the player")]
public Inventory Inventory;
- #endregion Inspector Fields
+ #endregion Inspector Fields
- #region Unity Functions
+ #region Unity Functions
- private void Awake ()
- {
- Inventory.Clone(startingInventory);
+ private void Awake()
+ {
+ if (Inventory != null || startingInventory != null)
+ Inventory.Clone(startingInventory);
- //If no starting block find one below it
- if (CurrentBlock == null)
- Block.isBlockAtPosition (transform.position + Vector3.down / 2, 1, ~Ignore, out CurrentBlock);
+ //If no starting block find one below it
+ if (CurrentBlock == null)
+ Block.isBlockAtPosition(transform.position + Vector3.down / 2, 1, ~Ignore, out CurrentBlock);
- //move to starting block
- transform.position = CurrentBlock.VisualPosition;
- }
+ //move to starting block
+ transform.position = CurrentBlock.VisualPosition;
+ }
- #endregion Unity Functions
+ #endregion Unity Functions
- #region Class Implementation
+ #region Class Implementation
- ///
- /// Moves one block in specefied direction, Can walk off obstacles
- ///
- /// direction to walk
- /// Technically is same as JumpLong(1) but kept seperate to avoid confusion
- public void Move (Direction direction)
- {
- //setting up variables
- Vector3 position = CurrentBlock.position + direction.ToVector (transform); // position wanted
- Block hit; //output of block detection
- Block moveTo = CurrentBlock; //block we'll actually move to
+ ///
+ /// Moves one block in specefied direction, Can walk off obstacles
+ ///
+ /// direction to walk
+ /// Technically is same as JumpLong(1) but kept seperate to avoid confusion
+ public void Move(Direction direction)
+ {
+ //setting up variables
+ Vector3 position = CurrentBlock.position + direction.ToVector(transform); // position wanted
+ Block hit; //output of block detection
+ Block moveTo = CurrentBlock; //block we'll actually move to
- //if move is obstucted no where to move
- if (Block.isBlockAtPosition (position + Vector3.up, 1, ~Ignore))
- return;
+ //if move is obstucted no where to move
+ if (Block.isBlockAtPosition(position + Vector3.up, 1, ~Ignore))
+ return;
- //If block at Position is walkable set it to moveTo
- if (Block.isBlockAtPosition (position, 1, ~Ignore, out hit) && hit.isWalkable (~Ignore))
- moveTo = hit;
+ //If block at Position is walkable set it to moveTo
+ if (Block.isBlockAtPosition(position, 1, ~Ignore, out hit) && hit.isWalkable(~Ignore))
+ moveTo = hit;
//else if block down one is walkable
- else if (Block.isBlockAtPosition (position + Vector3.down, 1, ~Ignore, out hit) && hit.isWalkable (~Ignore))
- moveTo = hit;
-
- //set current block && move
- CurrentBlock = moveTo;
- transform.position = CurrentBlock.VisualPosition;
- }
-
- ///
- /// Upon collision with a floating block, collect its
- /// Upon collision with the end portal, end of level
- ///
- /// name of collided object
- void OnTriggerEnter (Collider other)
- {
+ else if (Block.isBlockAtPosition(position + Vector3.down, 1, ~Ignore, out hit) && hit.isWalkable(~Ignore))
+ moveTo = hit;
+
+ //set current block && move
+ CurrentBlock = moveTo;
+ transform.position = CurrentBlock.VisualPosition;
+ }
+
+ ///
+ /// Upon collision with a floating block, collect its
+ /// Upon collision with the end portal, end of level
+ ///
+ /// name of collided object
+ void OnTriggerEnter(Collider other)
+ {
Collectable collectable = other.GetComponentInChildren();
- if (other != null) {
+ if (collectable != null)
+ {
collectable.OnCollect(this);
- }
- if (other.gameObject.name == "End Portal") {
- other.GetComponent ().enabled = false;
- Debug.Log ("You finished this level!");
- SceneManager.LoadScene (nextScene);
- }
-
- }
-
- ///
- /// Rotates to point in specific direction based on current direction
- ///
- /// Local direction to point
- public void Rotate (Direction direction)
- {
- transform.forward = direction.ToVector (transform);
- }
-
- ///
- /// Jumps in specefied direction, picks between Long Jump and Jumping up
- ///
- /// Direction to Jump
- public void Jump (Direction direction)
- {
- //if there is a block infront JumpUp else LongJump
- if (Block.isBlockAtPosition (CurrentBlock.position + direction.ToVector (transform) + Vector3.up, 1, ~Ignore))
- JumpUp (direction);
- else
- JumpLong (direction);
- }
-
- #endregion Class Implementation
-
- #region Private Functions
-
- ///
- /// Jumps up obstacle of specific height. Jumps as high as possible
- ///
- /// Direction of obstacle
- /// max height
- private void JumpUp (Direction direction, int height = 1)
- {
- //setting up variables
- Vector3 position; // position wanted
- Block hit; //output of block detection
- Block moveTo = CurrentBlock; //block we'll actually move to
-
- //Check blocks in going up then move to the heighest walkable one
- for (int i = 0; i <= height; i++) {
- //next position up the tower
- position = CurrentBlock.position + direction.ToVector (transform) + (Vector3.up * i);
-
- //if block is walkable set it to last known position
- if (Block.isBlockAtPosition (position, 1, ~Ignore, out hit) && hit.isWalkable (~Ignore))
- moveTo = hit;
- }
-
- //set current block && move
- CurrentBlock = moveTo;
- transform.position = CurrentBlock.VisualPosition;
- }
-
- ///
- /// Long jumps forward a specified distance. Can Jump gaps. Stops at obstruction
- ///
- /// Direction to Jump
- /// Max distance
- private void JumpLong (Direction direction, int Distance = 2)
- {
- //setting up variables
- Vector3 position; // position wanted
- Block hit; //output of block detection
- Block moveTo = CurrentBlock; //block we'll actually move to
-
- //Check blocks in front until we hit an obstruction or went the distance
- for (int i = 1; i <= Distance; i++) {
- //Next position to MoveTo
- position = CurrentBlock.position + (direction.ToVector (transform) * i);
-
- //if jump is obstructed, stop and go to last known block
- if (Block.isBlockAtPosition (position + Vector3.up, 1, ~Ignore))
- break;
-
-
- //If block at Position is walkable set it to last known position
- if (Block.isBlockAtPosition (position, 1, ~Ignore, out hit) && hit.isWalkable (~Ignore))
- moveTo = hit;
+ }
+ if (other.gameObject.name == "End Portal")
+ {
+ other.GetComponent().enabled = false;
+ Debug.Log("You finished this level!");
+ SceneManager.LoadScene(nextScene);
+ }
+
+ }
+
+ ///
+ /// Rotates to point in specific direction based on current direction
+ ///
+ /// Local direction to point
+ public void Rotate(Direction direction)
+ {
+ transform.forward = direction.ToVector(transform);
+ }
+
+ ///
+ /// Jumps in specefied direction, picks between Long Jump and Jumping up
+ ///
+ /// Direction to Jump
+ public void Jump(Direction direction)
+ {
+ //if there is a block infront JumpUp else LongJump
+ if (Block.isBlockAtPosition(CurrentBlock.position + direction.ToVector(transform) + Vector3.up, 1, ~Ignore))
+ JumpUp(direction);
+ else
+ JumpLong(direction);
+ }
+
+ #endregion Class Implementation
+
+ #region Private Functions
+
+ ///
+ /// Jumps up obstacle of specific height. Jumps as high as possible
+ ///
+ /// Direction of obstacle
+ /// max height
+ private void JumpUp(Direction direction, int height = 1)
+ {
+ //setting up variables
+ Vector3 position; // position wanted
+ Block hit; //output of block detection
+ Block moveTo = CurrentBlock; //block we'll actually move to
+
+ //Check blocks in going up then move to the heighest walkable one
+ for (int i = 0; i <= height; i++)
+ {
+ //next position up the tower
+ position = CurrentBlock.position + direction.ToVector(transform) + (Vector3.up * i);
+
+ //if block is walkable set it to last known position
+ if (Block.isBlockAtPosition(position, 1, ~Ignore, out hit) && hit.isWalkable(~Ignore))
+ moveTo = hit;
+ }
+
+ //set current block && move
+ CurrentBlock = moveTo;
+ transform.position = CurrentBlock.VisualPosition;
+ }
+
+ ///
+ /// Long jumps forward a specified distance. Can Jump gaps. Stops at obstruction
+ ///
+ /// Direction to Jump
+ /// Max distance
+ private void JumpLong(Direction direction, int Distance = 2)
+ {
+ //setting up variables
+ Vector3 position; // position wanted
+ Block hit; //output of block detection
+ Block moveTo = CurrentBlock; //block we'll actually move to
+
+ //Check blocks in front until we hit an obstruction or went the distance
+ for (int i = 1; i <= Distance; i++)
+ {
+ //Next position to MoveTo
+ position = CurrentBlock.position + (direction.ToVector(transform) * i);
+
+ //if jump is obstructed, stop and go to last known block
+ if (Block.isBlockAtPosition(position + Vector3.up, 1, ~Ignore))
+ break;
+
+
+ //If block at Position is walkable set it to last known position
+ if (Block.isBlockAtPosition(position, 1, ~Ignore, out hit) && hit.isWalkable(~Ignore))
+ moveTo = hit;
//else if block down one is walkable
- else if (Block.isBlockAtPosition (position + Vector3.down, 1, ~Ignore, out hit) && hit.isWalkable (~Ignore))
- moveTo = hit;
+ else if (Block.isBlockAtPosition(position + Vector3.down, 1, ~Ignore, out hit) && hit.isWalkable(~Ignore))
+ moveTo = hit;
- }//end for
+ }//end for
- //Set Current Block and move
- CurrentBlock = moveTo;
- transform.position = CurrentBlock.VisualPosition;
- }
+ //Set Current Block and move
+ CurrentBlock = moveTo;
+ transform.position = CurrentBlock.VisualPosition;
+ }
- #endregion Private Functions
+ #endregion Private Functions
}
\ No newline at end of file