From 588df6407fad05f5d00bf83237d2c38e9e1c1ec9 Mon Sep 17 00:00:00 2001 From: Giovani Date: Sat, 1 Feb 2020 13:27:07 -0500 Subject: [PATCH] Finished making successful path for event controls --- Assets/Model.meta | 8 ++ Assets/Model/EventControlTile.cs | 26 ++++ Assets/Model/EventControlTile.cs.meta | 11 ++ Assets/Scenes/LevelOne.unity | 5 +- Assets/Scripts/EventControls.cs | 130 ++++++++++++++++++ ...sDisplay.cs.meta => EventControls.cs.meta} | 0 Assets/Scripts/EventControlsDisplay.cs | 71 ---------- Assets/Scripts/Player.cs | 2 +- .../Sprites/Controls/Control W Success.asset | 36 +++++ .../Controls/Control W Success.asset.meta | 8 ++ Assets/Sprites/Palette/Event Controls.prefab | 21 ++- 11 files changed, 239 insertions(+), 79 deletions(-) create mode 100644 Assets/Model.meta create mode 100644 Assets/Model/EventControlTile.cs create mode 100644 Assets/Model/EventControlTile.cs.meta create mode 100644 Assets/Scripts/EventControls.cs rename Assets/Scripts/{EventControlsDisplay.cs.meta => EventControls.cs.meta} (100%) delete mode 100644 Assets/Scripts/EventControlsDisplay.cs create mode 100644 Assets/Sprites/Controls/Control W Success.asset create mode 100644 Assets/Sprites/Controls/Control W Success.asset.meta diff --git a/Assets/Model.meta b/Assets/Model.meta new file mode 100644 index 0000000..f22c276 --- /dev/null +++ b/Assets/Model.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 477280fac62d2934f9d0aa49bedf3251 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Model/EventControlTile.cs b/Assets/Model/EventControlTile.cs new file mode 100644 index 0000000..95fd97f --- /dev/null +++ b/Assets/Model/EventControlTile.cs @@ -0,0 +1,26 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using UnityEngine; +using UnityEngine.Tilemaps; + +namespace Assets.Model +{ + public class EventControlTile + { + public KeyCode keyCode; + public Tile tile; + public Tile successTile; + public Vector3Int position; + + public EventControlTile(KeyCode keyCode, Tile tile, Tile successTile, Vector3Int position) + { + this.keyCode = keyCode; + this.tile = tile; + this.successTile = successTile; + this.position = position; + } + } +} diff --git a/Assets/Model/EventControlTile.cs.meta b/Assets/Model/EventControlTile.cs.meta new file mode 100644 index 0000000..fff2c4e --- /dev/null +++ b/Assets/Model/EventControlTile.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 651afb7ac1f7a324b8b21db2b04ff151 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/LevelOne.unity b/Assets/Scenes/LevelOne.unity index ea191cf..bcf44c8 100644 --- a/Assets/Scenes/LevelOne.unity +++ b/Assets/Scenes/LevelOne.unity @@ -167,9 +167,10 @@ MonoBehaviour: m_EditorClassIdentifier: camera: {fileID: 1337282922} tile: {fileID: 11400000, guid: 7ece7857530facb42b843eed2526c86a, type: 2} + successTile: {fileID: 11400000, guid: 6cf7a50810d16f2468acc06180743d07, type: 2} framesPerControlTile: 15 nextControlYOffset: 4 - nextControlXOffset: 1.5 + nextControlXOffset: 2.5 --- !u!483693784 &1491656 TilemapRenderer: m_ObjectHideFlags: 0 @@ -389,7 +390,7 @@ MonoBehaviour: m_EditorClassIdentifier: player: {fileID: 1671840916} offsetY: 2 - interpolate: 0.1 + interpolate: 0.6 --- !u!4 &1146013793 stripped Transform: m_CorrespondingSourceObject: {fileID: 5711328081315814049, guid: fe8fb0c1c30f84b43885e84de26e0f11, diff --git a/Assets/Scripts/EventControls.cs b/Assets/Scripts/EventControls.cs new file mode 100644 index 0000000..08dd965 --- /dev/null +++ b/Assets/Scripts/EventControls.cs @@ -0,0 +1,130 @@ +using Assets.Model; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.Tilemaps; + +public class EventControls : MonoBehaviour +{ + [SerializeField] private Camera camera; + [SerializeField] private Tile tile; + [SerializeField] private Tile successTile; + [SerializeField] private float framesPerControlTile = 15; + [SerializeField] private float nextControlYOffset = 0; + [SerializeField] private float nextControlXOffset = 0; + [SerializeField] private float tileMapClearDelayInSeconds = 0.5f; + + private Tilemap tilemap; + + /* For drawing event control tiles */ + private Vector3Int? initialCameraPosition; + private int maxNumberOfControlTiles = 3; + private int numberOfControlTilesSet = 0; + private int nextControlAccumalator = 0; + + private bool eventDrawn = false; + private bool eventTriggered = false; + private int eventCycleInSeconds = 4; + private int eventCycleAccumalator = 0; + private int tileMapClearDelayAccumalator = 0; + private EventControlTile currentEventControl; + + private Queue eventControlTilesInCycle; + + private int framesPerSecond => 60; + + private void Start() + { + tilemap = GetComponent(); + eventControlTilesInCycle = new Queue(); + eventTriggered = true; // TODO: TEST + } + + private void Update() + { + if (eventTriggered) + { + SetTile(); + SetTileMapPosition(); + } + else + { + nextControlAccumalator = 0; + } + + if (eventDrawn && eventTriggered) + { + if (currentEventControl == null) + currentEventControl = eventControlTilesInCycle.Dequeue(); + + if (Input.GetKeyDown(currentEventControl.keyCode)) + { + tilemap.SetTile(currentEventControl.position, currentEventControl.successTile); + + currentEventControl = null; + if (eventControlTilesInCycle.Count == 0) + { + eventTriggered = false; + } + } + } + + if (eventDrawn && !eventTriggered) + { + if (tileMapClearDelayAccumalator >= tileMapClearDelayInSeconds * framesPerSecond) + { + tilemap.ClearAllTiles(); + tileMapClearDelayAccumalator = 0; + eventDrawn = false; + } + else + { + tileMapClearDelayAccumalator++; + } + } + } + + private void SetTile() + { + if (nextControlAccumalator >= framesPerControlTile && numberOfControlTilesSet < maxNumberOfControlTiles) + { + if (initialCameraPosition == null) + initialCameraPosition = GetCameraPosition(); + + // Store tiles for event cycle + var eventControlTile = new EventControlTile(KeyCode.W, tile, successTile, GetNextTilePosition()); /* TODO: Hard code */ + eventControlTilesInCycle.Enqueue(eventControlTile); + + tilemap.SetTile(eventControlTile.position, tile); + + nextControlAccumalator = 0; + numberOfControlTilesSet++; + } + else if (numberOfControlTilesSet == maxNumberOfControlTiles) + { + initialCameraPosition = null; + eventDrawn = true; + } + + nextControlAccumalator++; + } + + private Vector3Int GetCameraPosition() + { + return new Vector3Int((int)camera.transform.position.x, + (int)camera.transform.position.y, + (int)camera.transform.position.z); + } + + private Vector3Int GetNextTilePosition() + { + return (initialCameraPosition + new Vector3Int(numberOfControlTilesSet, 0, 0)) + .GetValueOrDefault(); + } + + private void SetTileMapPosition() + { + transform.position = camera.transform.position + + new Vector3(nextControlXOffset, nextControlYOffset, 0); // offset + } +} diff --git a/Assets/Scripts/EventControlsDisplay.cs.meta b/Assets/Scripts/EventControls.cs.meta similarity index 100% rename from Assets/Scripts/EventControlsDisplay.cs.meta rename to Assets/Scripts/EventControls.cs.meta diff --git a/Assets/Scripts/EventControlsDisplay.cs b/Assets/Scripts/EventControlsDisplay.cs deleted file mode 100644 index f8e322e..0000000 --- a/Assets/Scripts/EventControlsDisplay.cs +++ /dev/null @@ -1,71 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using UnityEngine; -using UnityEngine.Tilemaps; - -public class EventControlsDisplay : MonoBehaviour -{ - [SerializeField] private Camera camera; - [SerializeField] private Tile tile; - [SerializeField] private float framesPerControlTile = 15; - [SerializeField] private float nextControlYOffset = 0; - [SerializeField] private float nextControlXOffset = 0; - - private Tilemap tilemap; - private int maxNumberOfControlTiles = 3; - private int numberOfControlTilesSet = 0; - private Vector3Int? initialCameraPosition; - private int nextControlAccumalator = 0; - - private int framePerSecond => 60; - - private void Start() - { - tilemap = GetComponent(); - } - - private void Update() - { - SetTile(); - SetTileMapPosition(); - - nextControlAccumalator++; - } - - private void SetTile() - { - if (nextControlAccumalator >= framesPerControlTile && numberOfControlTilesSet < maxNumberOfControlTiles) - { - if (initialCameraPosition == null) - initialCameraPosition = GetCameraPosition(); - - tilemap.SetTile(GetNextTilePosition(), tile); - - nextControlAccumalator = 0; - numberOfControlTilesSet++; - } - else if (numberOfControlTilesSet == maxNumberOfControlTiles) - { - initialCameraPosition = null; - } - } - - private Vector3Int GetCameraPosition() - { - return new Vector3Int((int) camera.transform.position.x, - (int) camera.transform.position.y, - (int) camera.transform.position.z); - } - - private Vector3Int GetNextTilePosition() - { - return (initialCameraPosition + new Vector3Int(numberOfControlTilesSet, 0, 0)) - .GetValueOrDefault(); - } - - private void SetTileMapPosition() - { - transform.position = camera.transform.position + - new Vector3(nextControlXOffset, nextControlYOffset, 0); // offset - } -} diff --git a/Assets/Scripts/Player.cs b/Assets/Scripts/Player.cs index 295ce60..c82d6d1 100644 --- a/Assets/Scripts/Player.cs +++ b/Assets/Scripts/Player.cs @@ -107,7 +107,7 @@ public class Player : MonoBehaviour private void HandleAnimations() { animator.SetBool("IsRunning", Mathf.Abs(rigidBody.velocity.x) > float.Epsilon); - animator.SetBool("IsOnGround", IsPlayerOnGround()); + animator.SetBool("IsGround", IsPlayerOnGround()); animator.SetFloat("YVelocity", rigidBody.velocity.y); } } diff --git a/Assets/Sprites/Controls/Control W Success.asset b/Assets/Sprites/Controls/Control W Success.asset new file mode 100644 index 0000000..4bedf93 --- /dev/null +++ b/Assets/Sprites/Controls/Control W Success.asset @@ -0,0 +1,36 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 13312, guid: 0000000000000000e000000000000000, type: 0} + m_Name: Control W Success + m_EditorClassIdentifier: + m_Sprite: {fileID: 21300000, guid: 7c63d0c80ca19b944a6838f2becbc094, type: 3} + m_Color: {r: 0.066082224, g: 0.9339623, b: 0.12693371, a: 1} + m_Transform: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 + m_InstancedGameObject: {fileID: 0} + m_Flags: 1 + m_ColliderType: 1 diff --git a/Assets/Sprites/Controls/Control W Success.asset.meta b/Assets/Sprites/Controls/Control W Success.asset.meta new file mode 100644 index 0000000..8f04672 --- /dev/null +++ b/Assets/Sprites/Controls/Control W Success.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6cf7a50810d16f2468acc06180743d07 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Sprites/Palette/Event Controls.prefab b/Assets/Sprites/Palette/Event Controls.prefab index 7288274..1e82ddc 100644 --- a/Assets/Sprites/Palette/Event Controls.prefab +++ b/Assets/Sprites/Palette/Event Controls.prefab @@ -85,6 +85,15 @@ Tilemap: m_GameObject: {fileID: 7903917978724306658} m_Enabled: 1 m_Tiles: + - first: {x: -2, y: 1, z: 0} + second: + m_TileIndex: 1 + m_TileSpriteIndex: 0 + m_TileMatrixIndex: 0 + m_TileColorIndex: 0 + m_ObjectToInstantiate: {fileID: 0} + m_TileFlags: 1 + m_ColliderType: 1 - first: {x: 0, y: 1, z: 0} second: m_TileIndex: 0 @@ -98,11 +107,13 @@ Tilemap: m_TileAssetArray: - m_RefCount: 1 m_Data: {fileID: 11400000, guid: 7ece7857530facb42b843eed2526c86a, type: 2} - m_TileSpriteArray: - m_RefCount: 1 + m_Data: {fileID: 11400000, guid: 6cf7a50810d16f2468acc06180743d07, type: 2} + m_TileSpriteArray: + - m_RefCount: 2 m_Data: {fileID: 21300000, guid: 7c63d0c80ca19b944a6838f2becbc094, type: 3} m_TileMatrixArray: - - m_RefCount: 1 + - m_RefCount: 2 m_Data: e00: 1 e01: 0 @@ -121,12 +132,12 @@ Tilemap: e32: 0 e33: 1 m_TileColorArray: - - m_RefCount: 1 + - m_RefCount: 2 m_Data: {r: 1, g: 1, b: 1, a: 1} m_AnimationFrameRate: 1 m_Color: {r: 1, g: 1, b: 1, a: 1} - m_Origin: {x: 0, y: 0, z: 0} - m_Size: {x: 1, y: 2, z: 1} + m_Origin: {x: -2, y: 0, z: 0} + m_Size: {x: 3, y: 2, z: 1} m_TileAnchor: {x: 0.5, y: 0.5, z: 0} m_TileOrientation: 0 m_TileOrientationMatrix: