50 lines
1.7 KiB
C#
50 lines
1.7 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|