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(); } // 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().Kill(); } Physics.Raycast(player1.position, dir, out RaycastHit spikeHit, Vector3.Distance(player1.position, player2.position), spikesMask); if (spikeHit.collider && spikeHit.collider.gameObject.GetComponent().Harming){ AudioManager.instance.PlayOneShot("Cuerda"); ScreenShake.Shake(2f, .5f); GameManager.Instance.player.GetComponent().Player1.gameObject.GetComponent().Kill(); GameManager.Instance.player.GetComponent().Player2.gameObject.GetComponent().Kill(); Destroy(gameObject); } } }