Twin-Hook/Assets/Scripts/Player/PlayerRope.cs
Gerard Gascón e0a842f222 init
2025-04-24 17:26:56 +02:00

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);
}
}
}