Continued working on event controls
This commit is contained in:
@@ -13,15 +13,17 @@ namespace Assets.Model
|
|||||||
public KeyCode keyCode;
|
public KeyCode keyCode;
|
||||||
public Tile tile;
|
public Tile tile;
|
||||||
public Tile successTile;
|
public Tile successTile;
|
||||||
|
public Tile failTile;
|
||||||
public Vector3Int position;
|
public Vector3Int position;
|
||||||
public bool isPlusTile;
|
public bool isPlusTile;
|
||||||
public bool isPerformed;
|
public bool isPerformed;
|
||||||
|
|
||||||
public EventControlTile(KeyCode keyCode, Tile tile, Tile successTile, Vector3Int position, bool isPlusTile = false)
|
public EventControlTile(KeyCode keyCode, Tile tile, Tile successTile, Tile failTile, Vector3Int position, bool isPlusTile = false)
|
||||||
{
|
{
|
||||||
this.keyCode = keyCode;
|
this.keyCode = keyCode;
|
||||||
this.tile = tile;
|
this.tile = tile;
|
||||||
this.successTile = successTile;
|
this.successTile = successTile;
|
||||||
|
this.failTile = failTile;
|
||||||
this.position = position;
|
this.position = position;
|
||||||
this.isPlusTile = isPlusTile;
|
this.isPlusTile = isPlusTile;
|
||||||
}
|
}
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -9,6 +9,7 @@ public class BugMovement : MonoBehaviour
|
|||||||
[SerializeField] private float movementSpeed = 10;
|
[SerializeField] private float movementSpeed = 10;
|
||||||
[SerializeField] BoxCollider2D playerCollider;
|
[SerializeField] BoxCollider2D playerCollider;
|
||||||
[SerializeField] EventControls eventControls;
|
[SerializeField] EventControls eventControls;
|
||||||
|
[SerializeField] Player player;
|
||||||
|
|
||||||
private int leftAccumalator = 0;
|
private int leftAccumalator = 0;
|
||||||
private int rightAccumalator = 0;
|
private int rightAccumalator = 0;
|
||||||
@@ -25,7 +26,7 @@ public class BugMovement : MonoBehaviour
|
|||||||
private void Update()
|
private void Update()
|
||||||
{
|
{
|
||||||
if (HasEncounteredPlayer())
|
if (HasEncounteredPlayer())
|
||||||
eventControls.TriggerEvent(playerCollider, GetComponent<BoxCollider2D>());
|
eventControls.TriggerEvent(playerCollider, GetComponent<BoxCollider2D>(), player);
|
||||||
|
|
||||||
var totalFramesGoingLeft = framesPerSecond * secondsGoingLeft;
|
var totalFramesGoingLeft = framesPerSecond * secondsGoingLeft;
|
||||||
var totalFramesGoingRight = framesPerSecond * secondsGoingRight;
|
var totalFramesGoingRight = framesPerSecond * secondsGoingRight;
|
||||||
|
|||||||
@@ -7,10 +7,11 @@ using UnityEngine.Tilemaps;
|
|||||||
|
|
||||||
public class EventControls : MonoBehaviour
|
public class EventControls : MonoBehaviour
|
||||||
{
|
{
|
||||||
[SerializeField] private Player player;
|
[SerializeField] private Player player;
|
||||||
[SerializeField] private Camera camera;
|
[SerializeField] private Camera camera;
|
||||||
[SerializeField] private List<Tile> tiles;
|
[SerializeField] private List<Tile> tiles;
|
||||||
[SerializeField] private List<Tile> successTiles;
|
[SerializeField] private List<Tile> successTiles;
|
||||||
|
[SerializeField] private List<Tile> failTiles;
|
||||||
[SerializeField] private Tile plusTile;
|
[SerializeField] private Tile plusTile;
|
||||||
[SerializeField] private float framesPerControlTile = 15;
|
[SerializeField] private float framesPerControlTile = 15;
|
||||||
[SerializeField] private int nextControlYOffset = 0;
|
[SerializeField] private int nextControlYOffset = 0;
|
||||||
@@ -31,6 +32,7 @@ public class EventControls : MonoBehaviour
|
|||||||
private int eventCycleAccumalator = 0;
|
private int eventCycleAccumalator = 0;
|
||||||
private int tileMapClearDelayAccumalator = 0;
|
private int tileMapClearDelayAccumalator = 0;
|
||||||
private EventControlTile currentEventControl;
|
private EventControlTile currentEventControl;
|
||||||
|
private bool isInBattle = false;
|
||||||
|
|
||||||
private Collider2D currentPlayerCollider;
|
private Collider2D currentPlayerCollider;
|
||||||
private Collider2D currentEnemyCollider;
|
private Collider2D currentEnemyCollider;
|
||||||
@@ -42,7 +44,7 @@ public class EventControls : MonoBehaviour
|
|||||||
private int framesPerSecond => 60;
|
private int framesPerSecond => 60;
|
||||||
private Vector3Int nextControlOffSetAsVector => new Vector3Int(nextControlXOffset, nextControlYOffset, 0);
|
private Vector3Int nextControlOffSetAsVector => new Vector3Int(nextControlXOffset, nextControlYOffset, 0);
|
||||||
|
|
||||||
public void TriggerEvent(Collider2D playerCollider, Collider2D enemyCollider)
|
public void TriggerEvent(Collider2D playerCollider, Collider2D enemyCollider, Player player)
|
||||||
{
|
{
|
||||||
currentPlayerCollider = playerCollider;
|
currentPlayerCollider = playerCollider;
|
||||||
currentEnemyCollider = enemyCollider;
|
currentEnemyCollider = enemyCollider;
|
||||||
@@ -51,6 +53,7 @@ public class EventControls : MonoBehaviour
|
|||||||
Physics2D.IgnoreCollision(playerCollider, enemyCollider, true);
|
Physics2D.IgnoreCollision(playerCollider, enemyCollider, true);
|
||||||
|
|
||||||
eventTriggered = true;
|
eventTriggered = true;
|
||||||
|
isInBattle = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool IsEventTriggered()
|
public bool IsEventTriggered()
|
||||||
@@ -59,7 +62,7 @@ public class EventControls : MonoBehaviour
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void Start()
|
private void Start()
|
||||||
{
|
{
|
||||||
tilemap = GetComponent<Tilemap>();
|
tilemap = GetComponent<Tilemap>();
|
||||||
eventControlTilesInCycle = new List<EventControlTile>();
|
eventControlTilesInCycle = new List<EventControlTile>();
|
||||||
}
|
}
|
||||||
@@ -76,7 +79,7 @@ public class EventControls : MonoBehaviour
|
|||||||
{
|
{
|
||||||
PerformControlEvent();
|
PerformControlEvent();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (eventDrawn && !eventTriggered)
|
if (eventDrawn && !eventTriggered)
|
||||||
{
|
{
|
||||||
Reset();
|
Reset();
|
||||||
@@ -124,24 +127,24 @@ public class EventControls : MonoBehaviour
|
|||||||
|
|
||||||
private Vector3Int GetCameraPosition()
|
private Vector3Int GetCameraPosition()
|
||||||
{
|
{
|
||||||
return new Vector3Int((int)camera.transform.position.x,
|
return new Vector3Int((int)camera.transform.position.x,
|
||||||
(int)camera.transform.position.y,
|
(int)camera.transform.position.y,
|
||||||
(int)camera.transform.position.z);
|
(int)camera.transform.position.z);
|
||||||
}
|
}
|
||||||
|
|
||||||
private Vector3Int GetNextTilePosition()
|
private Vector3Int GetNextTilePosition()
|
||||||
{
|
{
|
||||||
return (initialCameraPosition + new Vector3Int(numberOfControlTilesSet*2, 0, 0))
|
return (initialCameraPosition + new Vector3Int(numberOfControlTilesSet * 2, 0, 0))
|
||||||
.GetValueOrDefault();
|
.GetValueOrDefault();
|
||||||
}
|
}
|
||||||
|
|
||||||
private Vector3Int GetNextPlusTilePosition()
|
private Vector3Int GetNextPlusTilePosition()
|
||||||
{
|
{
|
||||||
return (initialCameraPosition + new Vector3Int(numberOfControlTilesSet*2-1, 0, 0))
|
return (initialCameraPosition + new Vector3Int(numberOfControlTilesSet * 2 - 1, 0, 0))
|
||||||
.GetValueOrDefault();
|
.GetValueOrDefault();
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool PerformControlEvent()
|
private void PerformControlEvent()
|
||||||
{
|
{
|
||||||
nextControlAccumalator = 0;
|
nextControlAccumalator = 0;
|
||||||
|
|
||||||
@@ -158,21 +161,35 @@ public class EventControls : MonoBehaviour
|
|||||||
{
|
{
|
||||||
eventTriggered = false;
|
eventTriggered = false;
|
||||||
eventCycleAccumalator = 0;
|
eventCycleAccumalator = 0;
|
||||||
|
// Destroy(currentEnemyCollider.gameObject);
|
||||||
|
// currentEnemyCollider = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
else if (eventCycleAccumalator >= eventCycleInSeconds * framesPerSecond)
|
else if (eventCycleAccumalator >= eventCycleInSeconds * framesPerSecond)
|
||||||
{
|
{
|
||||||
eventTriggered = false;
|
eventTriggered = false;
|
||||||
|
isInBattle = false;
|
||||||
eventCycleAccumalator = 0;
|
eventCycleAccumalator = 0;
|
||||||
Destroy(currentEnemyCollider.gameObject);
|
currentEventControl = null;
|
||||||
currentEnemyCollider = null;
|
|
||||||
|
player.ThrowUserInTheAirHurt();
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
else
|
else if (FailedToClickCorrect(currentEventControl.keyCode))
|
||||||
{
|
{
|
||||||
eventCycleAccumalator++;
|
tilemap.SetTile(currentEventControl.position, currentEventControl.failTile);
|
||||||
|
eventTriggered = false;
|
||||||
|
isInBattle = false;
|
||||||
|
eventCycleAccumalator = 0;
|
||||||
|
currentEventControl = null;
|
||||||
|
|
||||||
|
player.ThrowUserInTheAirHurt();
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
eventCycleAccumalator++;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Reset()
|
private void Reset()
|
||||||
@@ -187,7 +204,8 @@ public class EventControls : MonoBehaviour
|
|||||||
|
|
||||||
if (currentEnemyCollider != null)
|
if (currentEnemyCollider != null)
|
||||||
Physics2D.IgnoreCollision(currentPlayerCollider, currentEnemyCollider, false);
|
Physics2D.IgnoreCollision(currentPlayerCollider, currentEnemyCollider, false);
|
||||||
player.EnablePlayerMovement();
|
if (!isInBattle)
|
||||||
|
player.EnablePlayerMovement();
|
||||||
|
|
||||||
currentPlayerCollider = null;
|
currentPlayerCollider = null;
|
||||||
currentEnemyCollider = null;
|
currentEnemyCollider = null;
|
||||||
@@ -211,6 +229,7 @@ public class EventControls : MonoBehaviour
|
|||||||
return new EventControlTile(TileToKeyMappings.TileToKey[randomNumber],
|
return new EventControlTile(TileToKeyMappings.TileToKey[randomNumber],
|
||||||
tiles[randomNumber],
|
tiles[randomNumber],
|
||||||
successTiles[randomNumber],
|
successTiles[randomNumber],
|
||||||
|
failTiles[randomNumber],
|
||||||
position);
|
position);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -219,7 +238,15 @@ public class EventControls : MonoBehaviour
|
|||||||
return new EventControlTile(KeyCode.Escape,
|
return new EventControlTile(KeyCode.Escape,
|
||||||
plusTile,
|
plusTile,
|
||||||
null,
|
null,
|
||||||
|
null,
|
||||||
position,
|
position,
|
||||||
true);
|
true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private bool FailedToClickCorrect(KeyCode correctKey)
|
||||||
|
{
|
||||||
|
var allKeysButCorrect = TileToKeyMappings.TileToKey.Where(x => x != correctKey);
|
||||||
|
|
||||||
|
return allKeysButCorrect.Any(x => Input.GetKeyDown(x));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,10 +13,12 @@ public class Player : MonoBehaviour
|
|||||||
[SerializeField] private float wallLineCaseDistance = 0.5f;
|
[SerializeField] private float wallLineCaseDistance = 0.5f;
|
||||||
[SerializeField] private float runErrorThreshold = 0.05f;
|
[SerializeField] private float runErrorThreshold = 0.05f;
|
||||||
[SerializeField] private int startHealth = 3;
|
[SerializeField] private int startHealth = 3;
|
||||||
private int currentHealth;
|
|
||||||
[SerializeField] private int startStamina = 100;
|
[SerializeField] private int startStamina = 100;
|
||||||
[SerializeField] private int coffeValuePercent = 10;
|
[SerializeField] private int coffeValuePercent = 10;
|
||||||
[SerializeField] private int bugStaminaDamagePercent = 15;
|
[SerializeField] private int bugStaminaDamagePercent = 15;
|
||||||
|
[SerializeField] private float hurtVelocity = 15f;
|
||||||
|
|
||||||
|
private int currentHealth;
|
||||||
private int currentStamina;
|
private int currentStamina;
|
||||||
|
|
||||||
[SerializeField] private SpriteRenderer healthBar;
|
[SerializeField] private SpriteRenderer healthBar;
|
||||||
@@ -222,4 +224,9 @@ public class Player : MonoBehaviour
|
|||||||
{
|
{
|
||||||
isMovementEnabled = true;
|
isMovementEnabled = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void ThrowUserInTheAirHurt()
|
||||||
|
{
|
||||||
|
GetComponent<Rigidbody2D>().velocity += new Vector2(Mathf.Sign(transform.localScale.x) * -1 * hurtVelocity, hurtVelocity);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -143,12 +143,12 @@ TextureImporter:
|
|||||||
name: GioBug0
|
name: GioBug0
|
||||||
rect:
|
rect:
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
x: 0
|
x: 8
|
||||||
y: 0
|
y: 0
|
||||||
width: 64
|
width: 51
|
||||||
height: 64
|
height: 43
|
||||||
alignment: 7
|
alignment: 0
|
||||||
pivot: {x: 0.5, y: 0}
|
pivot: {x: 0.5, y: 0.5}
|
||||||
border: {x: 0, y: 0, z: 0, w: 0}
|
border: {x: 0, y: 0, z: 0, w: 0}
|
||||||
outline: []
|
outline: []
|
||||||
physicsShape: []
|
physicsShape: []
|
||||||
@@ -164,12 +164,12 @@ TextureImporter:
|
|||||||
name: GioBug1
|
name: GioBug1
|
||||||
rect:
|
rect:
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
x: 64
|
x: 71
|
||||||
y: 0
|
y: 0
|
||||||
width: 64
|
width: 51
|
||||||
height: 64
|
height: 44
|
||||||
alignment: 7
|
alignment: 0
|
||||||
pivot: {x: 0.5, y: 0}
|
pivot: {x: 0.5, y: 0.5}
|
||||||
border: {x: 0, y: 0, z: 0, w: 0}
|
border: {x: 0, y: 0, z: 0, w: 0}
|
||||||
outline: []
|
outline: []
|
||||||
physicsShape: []
|
physicsShape: []
|
||||||
|
|||||||
@@ -59,7 +59,7 @@ AnimatorStateMachine:
|
|||||||
m_ChildStates:
|
m_ChildStates:
|
||||||
- serializedVersion: 1
|
- serializedVersion: 1
|
||||||
m_State: {fileID: -2351193573875906098}
|
m_State: {fileID: -2351193573875906098}
|
||||||
m_Position: {x: 200, y: 0, z: 0}
|
m_Position: {x: 270, y: 50, z: 0}
|
||||||
m_ChildStateMachines: []
|
m_ChildStateMachines: []
|
||||||
m_AnyStateTransitions: []
|
m_AnyStateTransitions: []
|
||||||
m_EntryTransitions: []
|
m_EntryTransitions: []
|
||||||
|
|||||||
Reference in New Issue
Block a user