Merge branch 'master' of https://github.com/SweetTini/GlobalGameJam2020
This commit is contained in:
@@ -7,22 +7,21 @@ using UnityEngine.Tilemaps;
|
||||
|
||||
public class EventControls : MonoBehaviour
|
||||
{
|
||||
[SerializeField] private Player player;
|
||||
[SerializeField] private Camera camera;
|
||||
[SerializeField] private Tile tile;
|
||||
[SerializeField] private List<Tile> tiles;
|
||||
[SerializeField] private List<Tile> successTiles;
|
||||
[SerializeField] private Tile successTile;
|
||||
[SerializeField] private Tile plusTile;
|
||||
[SerializeField] private float framesPerControlTile = 15;
|
||||
[SerializeField] private int nextControlYOffset = 0;
|
||||
[SerializeField] private int nextControlXOffset = 0;
|
||||
private int nextControlXOffset => 0 - maxNumberOfControlTiles + 1;
|
||||
[SerializeField] private float tileMapClearDelayInSeconds = 0.5f;
|
||||
[SerializeField] private int maxNumberOfControlTiles = 2;
|
||||
|
||||
private Tilemap tilemap;
|
||||
|
||||
/* For drawing event control tiles */
|
||||
private Vector3Int? initialCameraPosition;
|
||||
private int maxNumberOfControlTiles = 3;
|
||||
private int numberOfControlTilesSet = 0;
|
||||
private int nextControlAccumalator = 0;
|
||||
|
||||
@@ -47,6 +46,8 @@ public class EventControls : MonoBehaviour
|
||||
{
|
||||
currentPlayerCollider = playerCollider;
|
||||
currentEnemyCollider = enemyCollider;
|
||||
|
||||
player.DisablePlayerMovement();
|
||||
Physics2D.IgnoreCollision(playerCollider, enemyCollider, true);
|
||||
|
||||
eventTriggered = true;
|
||||
@@ -54,7 +55,6 @@ public class EventControls : MonoBehaviour
|
||||
|
||||
public bool IsEventTriggered()
|
||||
{
|
||||
|
||||
return eventTriggered;
|
||||
}
|
||||
|
||||
@@ -69,7 +69,7 @@ public class EventControls : MonoBehaviour
|
||||
if (eventTriggered)
|
||||
{
|
||||
SetTile();
|
||||
//SetTileMapPosition();
|
||||
// SetTileMapPosition();
|
||||
}
|
||||
|
||||
if (eventDrawn && eventTriggered)
|
||||
@@ -94,19 +94,13 @@ public class EventControls : MonoBehaviour
|
||||
EventControlTile eventControlTile = null;
|
||||
if (isControlTile == null || isControlTile.GetValueOrDefault())
|
||||
{
|
||||
eventControlTile = new EventControlTile(KeyCode.Q,
|
||||
tile,
|
||||
successTile,
|
||||
GetNextTilePosition() + nextControlOffSetAsVector); /* TODO: Hard code */
|
||||
eventControlTile = GenerateEventControlTile(GetNextTilePosition() + nextControlOffSetAsVector);
|
||||
isControlTile = false;
|
||||
numberOfControlTilesSet++;
|
||||
}
|
||||
else
|
||||
{
|
||||
eventControlTile = new EventControlTile(KeyCode.Escape,
|
||||
plusTile,
|
||||
null,
|
||||
GetNextTilePosition() + nextControlOffSetAsVector,
|
||||
true); /* TODO: Hard code */
|
||||
eventControlTile = GenerateEventControlPlusTile(GetNextPlusTilePosition() + nextControlOffSetAsVector);
|
||||
isControlTile = true;
|
||||
}
|
||||
|
||||
@@ -115,7 +109,6 @@ public class EventControls : MonoBehaviour
|
||||
tilemap.SetTile(eventControlTile.position, eventControlTile.tile);
|
||||
|
||||
nextControlAccumalator = 0;
|
||||
numberOfControlTilesSet++;
|
||||
}
|
||||
else if (numberOfControlTilesSet == maxNumberOfControlTiles)
|
||||
{
|
||||
@@ -138,11 +131,17 @@ public class EventControls : MonoBehaviour
|
||||
|
||||
private Vector3Int GetNextTilePosition()
|
||||
{
|
||||
return (initialCameraPosition + new Vector3Int(numberOfControlTilesSet, 0, 0))
|
||||
return (initialCameraPosition + new Vector3Int(numberOfControlTilesSet*2, 0, 0))
|
||||
.GetValueOrDefault();
|
||||
}
|
||||
|
||||
private void PerformControlEvent()
|
||||
private Vector3Int GetNextPlusTilePosition()
|
||||
{
|
||||
return (initialCameraPosition + new Vector3Int(numberOfControlTilesSet*2-1, 0, 0))
|
||||
.GetValueOrDefault();
|
||||
}
|
||||
|
||||
private bool PerformControlEvent()
|
||||
{
|
||||
nextControlAccumalator = 0;
|
||||
|
||||
@@ -163,24 +162,33 @@ public class EventControls : MonoBehaviour
|
||||
}
|
||||
else if (eventCycleAccumalator >= eventCycleInSeconds * framesPerSecond)
|
||||
{
|
||||
|
||||
eventTriggered = false;
|
||||
eventCycleAccumalator = 0;
|
||||
Destroy(currentEnemyCollider.gameObject);
|
||||
currentEnemyCollider = null;
|
||||
}
|
||||
else
|
||||
{
|
||||
eventCycleAccumalator++;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
private void Reset()
|
||||
{
|
||||
if (tileMapClearDelayAccumalator >= tileMapClearDelayInSeconds * framesPerSecond)
|
||||
{
|
||||
eventControlTilesInCycle.Clear();
|
||||
tilemap.ClearAllTiles();
|
||||
tileMapClearDelayAccumalator = 0;
|
||||
eventDrawn = false;
|
||||
numberOfControlTilesSet = 0;
|
||||
|
||||
Physics2D.IgnoreCollision(currentPlayerCollider, currentEnemyCollider, false);
|
||||
if (currentEnemyCollider != null)
|
||||
Physics2D.IgnoreCollision(currentPlayerCollider, currentEnemyCollider, false);
|
||||
player.EnablePlayerMovement();
|
||||
|
||||
currentPlayerCollider = null;
|
||||
currentEnemyCollider = null;
|
||||
}
|
||||
@@ -190,9 +198,28 @@ public class EventControls : MonoBehaviour
|
||||
}
|
||||
}
|
||||
|
||||
private void SetTileMapPosition()
|
||||
//private void SetTileMapPosition()
|
||||
//{
|
||||
// var offset = camera.transform.position.x - (int)camera.transform.position.x;
|
||||
// transform.position = new Vector3(transform.position.x + offset, transform.position.y, 0);
|
||||
//}
|
||||
|
||||
private EventControlTile GenerateEventControlTile(Vector3Int position)
|
||||
{
|
||||
transform.position = camera.transform.position +
|
||||
new Vector3Int(nextControlXOffset, nextControlYOffset, 0); // offset
|
||||
var randomNumber = Random.Range(0, TileToKeyMappings.TileToKey.Count);
|
||||
|
||||
return new EventControlTile(TileToKeyMappings.TileToKey[randomNumber],
|
||||
tiles[randomNumber],
|
||||
successTiles[randomNumber],
|
||||
position);
|
||||
}
|
||||
|
||||
private EventControlTile GenerateEventControlPlusTile(Vector3Int position)
|
||||
{
|
||||
return new EventControlTile(KeyCode.Escape,
|
||||
plusTile,
|
||||
null,
|
||||
position,
|
||||
true);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,9 +6,10 @@ using UnityEngine;
|
||||
public class Player : MonoBehaviour
|
||||
{
|
||||
[SerializeField] private float runSpeed = 10f;
|
||||
[SerializeField] private float jumpSpeed = 10f;
|
||||
[SerializeField] private float jumpSpeed = 35f;
|
||||
[SerializeField] private float runFasterFactor = 1.5f;
|
||||
[SerializeField] private float groundErrorThreshold = 0.05f;
|
||||
[SerializeField] private float groundErrorThreshold = 1.5f;
|
||||
[SerializeField] private float wallErrorThreshold = 1.5f;
|
||||
[SerializeField] private float wallLineCaseDistance = 0.5f;
|
||||
[SerializeField] private float runErrorThreshold = 0.05f;
|
||||
[SerializeField] private int startHealth = 3;
|
||||
@@ -22,11 +23,11 @@ public class Player : MonoBehaviour
|
||||
[SerializeField] private SpriteRenderer staminaBar;
|
||||
|
||||
|
||||
|
||||
private Rigidbody2D rigidBody;
|
||||
new private BoxCollider2D collider;
|
||||
private Animator animator;
|
||||
|
||||
private Vector2 wallLineCaseDistanceVector => new Vector2(wallLineCaseDistance, 0);
|
||||
private bool isMovementEnabled = true;
|
||||
|
||||
private void Start()
|
||||
{
|
||||
@@ -42,6 +43,28 @@ public class Player : MonoBehaviour
|
||||
private void Update()
|
||||
{
|
||||
MovePlayer();
|
||||
|
||||
//if (IsPlayerOnWall(true))
|
||||
//{
|
||||
// if (collider.sharedMaterial == null || collider.sharedMaterial.friction != 0f)
|
||||
// {
|
||||
// collider.sharedMaterial = new PhysicsMaterial2D();
|
||||
// collider.sharedMaterial.friction = 0f;
|
||||
// collider.enabled = false;
|
||||
// collider.enabled = true;
|
||||
// }
|
||||
//}
|
||||
//else
|
||||
//{
|
||||
// if (collider.sharedMaterial == null || collider.sharedMaterial.friction == 0f)
|
||||
// {
|
||||
// collider.sharedMaterial = new PhysicsMaterial2D();
|
||||
// collider.sharedMaterial.friction = 0.5f;
|
||||
// collider.enabled = false;
|
||||
// collider.enabled = true;
|
||||
// }
|
||||
//}
|
||||
|
||||
}
|
||||
|
||||
void OnCollisionEnter2D(Collision2D coll)
|
||||
@@ -80,9 +103,13 @@ public class Player : MonoBehaviour
|
||||
|
||||
private void MovePlayer()
|
||||
{
|
||||
Jump();
|
||||
Run();
|
||||
FlipSprite();
|
||||
if (isMovementEnabled)
|
||||
{
|
||||
Jump();
|
||||
Run();
|
||||
FlipSprite();
|
||||
}
|
||||
|
||||
HandleAnimations();
|
||||
}
|
||||
|
||||
@@ -100,9 +127,6 @@ public class Player : MonoBehaviour
|
||||
|
||||
private void Run()
|
||||
{
|
||||
if (IsPlayerOnWall())
|
||||
return;
|
||||
|
||||
var actualRunSpeed = runSpeed;
|
||||
|
||||
// Speed Run Increase
|
||||
@@ -110,6 +134,10 @@ public class Player : MonoBehaviour
|
||||
{
|
||||
actualRunSpeed *= runFasterFactor;
|
||||
}
|
||||
if (IsPlayerOnWall())
|
||||
{
|
||||
actualRunSpeed = 0;
|
||||
}
|
||||
|
||||
// Run
|
||||
if (Input.GetKey(KeyCode.RightArrow))
|
||||
@@ -124,38 +152,45 @@ public class Player : MonoBehaviour
|
||||
|
||||
private bool IsPlayerOnGround()
|
||||
{
|
||||
return IsPointOnGround(transform.position + new Vector3(0.3f, 0, 0)) ||
|
||||
IsPointOnGround(transform.position + new Vector3(-0.3f, 0, 0));
|
||||
return IsPointOnGround(transform.position + new Vector3(collider.bounds.extents.x * 0.96f, 0, 0)) ||
|
||||
IsPointOnGround(transform.position) ||
|
||||
IsPointOnGround(transform.position - new Vector3(collider.bounds.extents.x * 0.99f, 0, 0));
|
||||
}
|
||||
|
||||
private bool IsPointOnGround(Vector2 position)
|
||||
{
|
||||
Debug.DrawLine(position, position - new Vector2(0, collider.bounds.extents.y * groundErrorThreshold));
|
||||
|
||||
RaycastHit2D hit = Physics2D.Raycast(position,
|
||||
-Vector2.up,
|
||||
groundErrorThreshold,
|
||||
collider.bounds.extents.y * groundErrorThreshold,
|
||||
LayerMask.GetMask(LayerNames.Ground));
|
||||
|
||||
return hit.collider != null && hit.collider.IsTouching(collider);
|
||||
}
|
||||
|
||||
private bool IsPlayerOnWall()
|
||||
private bool IsPlayerOnWall(bool ignoreGround = false)
|
||||
{
|
||||
return IsPointOnWall(transform.position + new Vector3(0, 1, 0)) ||
|
||||
IsPointOnWall(transform.position + new Vector3(0, -1, 0)) ||
|
||||
IsPointOnWall(transform.position + new Vector3(0, -2, 0));
|
||||
return IsPointOnWall(transform.position + new Vector3(0, collider.bounds.extents.y * 0.6f, 0), ignoreGround) ||
|
||||
IsPointOnWall(transform.position - new Vector3(0, collider.bounds.extents.y * 0.25f, 0), ignoreGround) ||
|
||||
IsPointOnWall(transform.position - new Vector3(0, collider.bounds.extents.y * 0.8f, 0), ignoreGround) ||
|
||||
IsPointOnWall(transform.position - new Vector3(0, collider.bounds.extents.y * 1.5f, 0), ignoreGround);
|
||||
}
|
||||
|
||||
private bool IsPointOnWall(Vector2 position)
|
||||
private bool IsPointOnWall(Vector2 position, bool ignoreGround = false)
|
||||
{
|
||||
Debug.DrawLine(position, position + new Vector2(collider.bounds.extents.x * wallErrorThreshold, 0), Color.green);
|
||||
Debug.DrawLine(position, position - new Vector2(collider.bounds.extents.x * wallErrorThreshold, 0), Color.green);
|
||||
|
||||
var rightHit = Physics2D.Linecast(position,
|
||||
position + wallLineCaseDistanceVector,
|
||||
position + new Vector2(collider.bounds.extents.x * wallErrorThreshold, 0),
|
||||
LayerMask.GetMask(LayerNames.Ground));
|
||||
var leftHit = Physics2D.Linecast(position,
|
||||
position - wallLineCaseDistanceVector,
|
||||
position - new Vector2(collider.bounds.extents.x * wallErrorThreshold, 0),
|
||||
LayerMask.GetMask(LayerNames.Ground));
|
||||
|
||||
return ((rightHit.collider != null && rightHit.collider.IsTouching(collider)) ||
|
||||
(leftHit.collider != null && leftHit.collider.IsTouching(collider))) && !IsPlayerOnGround();
|
||||
(leftHit.collider != null && leftHit.collider.IsTouching(collider))) && (!IsPlayerOnGround() || ignoreGround);
|
||||
}
|
||||
|
||||
private bool HasEncounteredEnemy()
|
||||
@@ -177,4 +212,14 @@ public class Player : MonoBehaviour
|
||||
animator.SetBool("IsGround", IsPlayerOnGround());
|
||||
animator.SetFloat("YVelocity", rigidBody.velocity.y);
|
||||
}
|
||||
|
||||
public void DisablePlayerMovement()
|
||||
{
|
||||
isMovementEnabled = false;
|
||||
}
|
||||
|
||||
public void EnablePlayerMovement()
|
||||
{
|
||||
isMovementEnabled = true;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user