init
This commit is contained in:
commit
e0a842f222
796 changed files with 361371 additions and 0 deletions
41
Assets/Scripts/Player/PlayerDeath.cs
Normal file
41
Assets/Scripts/Player/PlayerDeath.cs
Normal file
|
@ -0,0 +1,41 @@
|
|||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
public class PlayerDeath : MonoBehaviour
|
||||
{
|
||||
bool invincible = true;
|
||||
|
||||
private void Start()
|
||||
{
|
||||
StartCoroutine(vincible(0.3f));
|
||||
}
|
||||
|
||||
IEnumerator vincible(float t)
|
||||
{
|
||||
yield return new WaitForSeconds(t);
|
||||
invincible = false;
|
||||
}
|
||||
private void OnTriggerEnter(Collider other)
|
||||
{
|
||||
if (!invincible)
|
||||
{
|
||||
if (other.gameObject.layer == 6)
|
||||
{
|
||||
Kill();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void Kill()
|
||||
{
|
||||
GetComponentInChildren<Animator>().SetBool("Die", true);
|
||||
GameManager.Instance.player.GetComponent<PlayerManager>().Player1.enabled = false;
|
||||
GameManager.Instance.player.GetComponent<PlayerManager>().Player2.enabled = false;
|
||||
Instantiate(GameManager.Instance.player.GetComponent<PlayerManager>().impactParticles, transform.position, Quaternion.identity);
|
||||
GameManager.Instance.StopGame();
|
||||
GetComponent<PlayerMovement>().enabled = false;
|
||||
Debug.Log("You lose");
|
||||
GameManager.Instance.Lose();
|
||||
}
|
||||
}
|
11
Assets/Scripts/Player/PlayerDeath.cs.meta
Normal file
11
Assets/Scripts/Player/PlayerDeath.cs.meta
Normal file
|
@ -0,0 +1,11 @@
|
|||
fileFormatVersion: 2
|
||||
guid: a033c899e7de82e439d272b5ebc82dfb
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
91
Assets/Scripts/Player/PlayerManager.cs
Normal file
91
Assets/Scripts/Player/PlayerManager.cs
Normal file
|
@ -0,0 +1,91 @@
|
|||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using Cinemachine;
|
||||
|
||||
public class PlayerManager : MonoBehaviour{
|
||||
|
||||
//public CinemachineVirtualCamera followCamera;
|
||||
|
||||
public ParticleSystem impactParticles;
|
||||
|
||||
PlayerMovement currentPlayer;
|
||||
|
||||
[Space]
|
||||
[SerializeField] PlayerMovement player1;
|
||||
[SerializeField] PlayerMovement player2;
|
||||
|
||||
public PlayerMovement Player1
|
||||
{
|
||||
get
|
||||
{
|
||||
return player1;
|
||||
}
|
||||
}
|
||||
public PlayerMovement Player2
|
||||
{
|
||||
get
|
||||
{
|
||||
return player2;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
[Space]
|
||||
[SerializeField, Range(0f, 1f)] float defaultTime = 1f;
|
||||
[SerializeField, Range(0f, 1f)] float slowTime = .1f;
|
||||
|
||||
[HideInInspector] public PlayerMovement playerMoving;
|
||||
|
||||
// Start is called before the first frame update
|
||||
public void Init(){
|
||||
currentPlayer = player1;
|
||||
|
||||
//followCamera.Follow = player1.transform;
|
||||
}
|
||||
|
||||
// Update is called once per frame
|
||||
void Update(){
|
||||
|
||||
}
|
||||
|
||||
private void ActivityHandle()
|
||||
{
|
||||
//if (Input.GetKeyDown(KeyCode.Space))
|
||||
//{
|
||||
// if (currentPlayer == player1)
|
||||
// {
|
||||
// //followCamera.Follow = player2.transform;
|
||||
// currentPlayer.active = false;
|
||||
// currentPlayer = player2;
|
||||
// currentPlayer.active = true;
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// //followCamera.Follow = player1.transform;
|
||||
// currentPlayer.active = false;
|
||||
// currentPlayer = player1;
|
||||
// currentPlayer.active = true;
|
||||
// }
|
||||
//}
|
||||
}
|
||||
|
||||
public void Move(PlayerMovement player){
|
||||
Time.timeScale = defaultTime;
|
||||
playerMoving = player;
|
||||
}
|
||||
|
||||
public void Stop(){
|
||||
Time.timeScale = slowTime;
|
||||
playerMoving = null;
|
||||
}
|
||||
|
||||
public GameObject getClosestPlayer(Vector3 position)
|
||||
{
|
||||
if (Vector3.Magnitude(position - player1.transform.position) < Vector3.Magnitude(position - player2.transform.position))
|
||||
return player1.gameObject;
|
||||
|
||||
return player2.gameObject;
|
||||
|
||||
}
|
||||
}
|
11
Assets/Scripts/Player/PlayerManager.cs.meta
Normal file
11
Assets/Scripts/Player/PlayerManager.cs.meta
Normal file
|
@ -0,0 +1,11 @@
|
|||
fileFormatVersion: 2
|
||||
guid: e213d3a02631a474f8046be5a688d1f8
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
139
Assets/Scripts/Player/PlayerMovement.cs
Normal file
139
Assets/Scripts/Player/PlayerMovement.cs
Normal file
|
@ -0,0 +1,139 @@
|
|||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
public class PlayerMovement : MyTypes.MyPawn{
|
||||
|
||||
public bool player1;
|
||||
|
||||
[Space]
|
||||
[SerializeField] PlayerManager playerManager;
|
||||
|
||||
Vector2 velocity;
|
||||
bool moving;
|
||||
Vector2 positionToGo;
|
||||
|
||||
Vector2 directionFacing = Vector2.up;
|
||||
float rotationVelocity;
|
||||
|
||||
// Start is called before the first frame update
|
||||
void Awake(){
|
||||
positionToGo = new Vector2(transform.position.x, transform.position.z);
|
||||
}
|
||||
|
||||
// Update is called once per frame
|
||||
void Update(){
|
||||
|
||||
|
||||
if (!player1)
|
||||
{
|
||||
if (Input.GetKeyDown(KeyCode.UpArrow))
|
||||
{
|
||||
positionToGo += Vector2.up;
|
||||
directionFacing = Vector2.up;
|
||||
GameManager.Instance.movePawn(this, MyTypes.MyDirection._UP);
|
||||
}
|
||||
else if (Input.GetKeyDown(KeyCode.DownArrow))
|
||||
{
|
||||
positionToGo += Vector2.down;
|
||||
directionFacing = Vector2.down;
|
||||
GameManager.Instance.movePawn(this, MyTypes.MyDirection._DOWN);
|
||||
}
|
||||
else if (Input.GetKeyDown(KeyCode.LeftArrow))
|
||||
{
|
||||
positionToGo += Vector2.left;
|
||||
directionFacing = Vector2.left;
|
||||
GameManager.Instance.movePawn(this, MyTypes.MyDirection._LEFT);
|
||||
}
|
||||
else if (Input.GetKeyDown(KeyCode.RightArrow))
|
||||
{
|
||||
positionToGo += Vector2.right;
|
||||
directionFacing = Vector2.right;
|
||||
GameManager.Instance.movePawn(this, MyTypes.MyDirection._RIGHT);
|
||||
}
|
||||
|
||||
if (Input.GetKeyDown(KeyCode.UpArrow) || Input.GetKeyDown(KeyCode.DownArrow) || Input.GetKeyDown(KeyCode.LeftArrow) || Input.GetKeyDown(KeyCode.RightArrow))
|
||||
AudioManager.instance.PlayOneShot("Pez");
|
||||
}
|
||||
else
|
||||
{
|
||||
if (Input.GetKeyDown(KeyCode.W))
|
||||
{
|
||||
positionToGo += Vector2.up;
|
||||
GameManager.Instance.movePawn(this, MyTypes.MyDirection._UP);
|
||||
directionFacing = Vector2.up;
|
||||
}
|
||||
else if (Input.GetKeyDown(KeyCode.S))
|
||||
{
|
||||
positionToGo += Vector2.down;
|
||||
GameManager.Instance.movePawn(this, MyTypes.MyDirection._DOWN);
|
||||
directionFacing = Vector2.down;
|
||||
}
|
||||
else if (Input.GetKeyDown(KeyCode.A))
|
||||
{
|
||||
positionToGo += Vector2.left;
|
||||
GameManager.Instance.movePawn(this, MyTypes.MyDirection._LEFT);
|
||||
directionFacing = Vector2.left;
|
||||
}
|
||||
else if (Input.GetKeyDown(KeyCode.D))
|
||||
{
|
||||
positionToGo += Vector2.right;
|
||||
GameManager.Instance.movePawn(this, MyTypes.MyDirection._RIGHT);
|
||||
directionFacing = Vector2.right;
|
||||
}
|
||||
|
||||
if(Input.GetKeyDown(KeyCode.A) || Input.GetKeyDown(KeyCode.D) || Input.GetKeyDown(KeyCode.S) || Input.GetKeyDown(KeyCode.W))
|
||||
AudioManager.instance.PlayOneShot("Pez");
|
||||
}
|
||||
|
||||
//Vector2 currentPosition = Vector2.SmoothDamp(new Vector2(transform.position.x, transform.position.z), positionToGo, ref velocity, .1f, Mathf.Infinity, Time.unscaledDeltaTime);
|
||||
//transform.position = new Vector3(currentPosition.x, transform.position.y, currentPosition.y);
|
||||
|
||||
float targetAngle = Mathf.Atan2(directionFacing.x, directionFacing.y) * Mathf.Rad2Deg;
|
||||
float angle = Mathf.SmoothDampAngle(transform.eulerAngles.y, targetAngle, ref rotationVelocity, .1f, Mathf.Infinity, Time.unscaledDeltaTime);
|
||||
transform.rotation = Quaternion.Euler(0f, angle, 0f);
|
||||
}
|
||||
|
||||
private void oldMovement()
|
||||
{
|
||||
if (playerManager.playerMoving == null || playerManager.playerMoving == this)
|
||||
{
|
||||
if (!moving)
|
||||
{
|
||||
Vector2 movement = Vector2.zero;
|
||||
if (Input.GetButtonDown("Up"))
|
||||
movement = Vector2.up;
|
||||
else if (Input.GetButtonDown("Down"))
|
||||
movement = Vector2.down;
|
||||
else if (Input.GetButtonDown("Left"))
|
||||
movement = Vector2.left;
|
||||
else if (Input.GetButtonDown("Right"))
|
||||
movement = Vector2.right;
|
||||
|
||||
if (movement.sqrMagnitude > .1f)
|
||||
{
|
||||
moving = true;
|
||||
directionFacing = movement;
|
||||
playerManager.Move(this);
|
||||
}
|
||||
positionToGo = new Vector2(positionToGo.x + movement.x, positionToGo.y + movement.y);
|
||||
}
|
||||
else
|
||||
{
|
||||
Vector2 currentPosition = Vector2.SmoothDamp(new Vector2(transform.position.x, transform.position.z), positionToGo, ref velocity, .1f, Mathf.Infinity, Time.unscaledDeltaTime);
|
||||
transform.position = new Vector3(currentPosition.x, transform.position.y, currentPosition.y);
|
||||
|
||||
if (Vector2.Distance(currentPosition, positionToGo) < .05f)
|
||||
{
|
||||
transform.position = new Vector3(positionToGo.x, transform.position.y, positionToGo.y);
|
||||
moving = false;
|
||||
playerManager.Stop();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
float targetAngle = Mathf.Atan2(directionFacing.x, directionFacing.y) * Mathf.Rad2Deg;
|
||||
float angle = Mathf.SmoothDampAngle(transform.eulerAngles.y, targetAngle, ref rotationVelocity, .1f, Mathf.Infinity, Time.unscaledDeltaTime);
|
||||
transform.rotation = Quaternion.Euler(0f, angle, 0f);
|
||||
}
|
||||
}
|
11
Assets/Scripts/Player/PlayerMovement.cs.meta
Normal file
11
Assets/Scripts/Player/PlayerMovement.cs.meta
Normal file
|
@ -0,0 +1,11 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 645bc137feec1104a9aa937afda9ba5e
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
50
Assets/Scripts/Player/PlayerRope.cs
Normal file
50
Assets/Scripts/Player/PlayerRope.cs
Normal file
|
@ -0,0 +1,50 @@
|
|||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
public class PlayerRope : MonoBehaviour{
|
||||
|
||||
[SerializeField] Transform player1, player2;
|
||||
LineRenderer rope;
|
||||
|
||||
[SerializeField] LayerMask enemyMask = -1;
|
||||
[SerializeField] LayerMask spikesMask = -1;
|
||||
|
||||
[SerializeField] PlayerManager playerManager;
|
||||
|
||||
// Start is called before the first frame update
|
||||
void Awake(){
|
||||
rope = GetComponent<LineRenderer>();
|
||||
}
|
||||
|
||||
// Update is called once per frame
|
||||
void Update(){
|
||||
|
||||
float toleranceThreshold = .5f;
|
||||
|
||||
Vector3[] points = new Vector3[2];
|
||||
points[0] = player1.position;
|
||||
points[1] = player2.position;
|
||||
rope.SetPositions(points);
|
||||
|
||||
Vector3 dir = (player2.position - player1.position).normalized;
|
||||
|
||||
Physics.Raycast(player1.position+dir*toleranceThreshold, dir, out RaycastHit enemyHit, Vector3.Distance(player1.position, player2.position)-toleranceThreshold*2, enemyMask);
|
||||
|
||||
if (enemyHit.collider){
|
||||
ScreenShake.Shake(1f, .25f);
|
||||
AudioManager.instance.PlayOneShot("KillPenguin");
|
||||
Instantiate(playerManager.impactParticles, enemyHit.collider.transform.position, Quaternion.identity);
|
||||
enemyHit.collider.gameObject.GetComponent<EnemyBehavior>().Kill();
|
||||
}
|
||||
|
||||
Physics.Raycast(player1.position, dir, out RaycastHit spikeHit, Vector3.Distance(player1.position, player2.position), spikesMask);
|
||||
if (spikeHit.collider && spikeHit.collider.gameObject.GetComponent<SpikeBehavior>().Harming){
|
||||
AudioManager.instance.PlayOneShot("Cuerda");
|
||||
ScreenShake.Shake(2f, .5f);
|
||||
GameManager.Instance.player.GetComponent<PlayerManager>().Player1.gameObject.GetComponent<PlayerDeath>().Kill();
|
||||
GameManager.Instance.player.GetComponent<PlayerManager>().Player2.gameObject.GetComponent<PlayerDeath>().Kill();
|
||||
Destroy(gameObject);
|
||||
}
|
||||
}
|
||||
}
|
11
Assets/Scripts/Player/PlayerRope.cs.meta
Normal file
11
Assets/Scripts/Player/PlayerRope.cs.meta
Normal file
|
@ -0,0 +1,11 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 5a0c81a25f3791a43b822ff75d775fd4
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
Loading…
Add table
Add a link
Reference in a new issue