public void StopSharkAnim(IcePosition pos) { if (iceScripts[(int)pos] != null) { iceScripts[(int)pos].StopSharkAnimation(); } }
public void TakeDamageByElement(int damage, IcePosition position) { if (iceScripts != null) { iceScripts[(int)position].TakeDamage(damage); } //Disparar animação necessária; }
void Update() { if (Time.timeScale == 0) { return; } if (Input.GetKeyDown(KeyCode.RightArrow) && trackClear) { PlayerManager.Instance.attacking = true; trackClear = false; trackEntry = _skeletonAnimation.state.SetAnimation(2, attack_right, false); //play SFX // trackEntry.End += OnEnd; icePosition = IcePosition.ICE_RIGHT; trackEntry.Complete += OnComplete; StartCoroutine(PlayHitSound()); _skeletonAnimation.state.AddEmptyAnimation(2, 0.2f, _skeletonAnimation.state.GetCurrent(2).AnimationTime + 1f); } if (Input.GetKeyDown(KeyCode.LeftArrow) && trackClear) { PlayerManager.Instance.attacking = true; trackClear = false; _skeletonAnimation.transform.localScale = new Vector2(-1f, transform.localScale.y); trackEntry = _skeletonAnimation.state.SetAnimation(2, attack_right, false); // trackEntry.End += OnEnd; icePosition = IcePosition.ICE_LEFT; StartCoroutine(PlayHitSound()); trackEntry = _skeletonAnimation.state.AddEmptyAnimation(2, 0.2f, _skeletonAnimation.state.GetCurrent(2).AnimationTime + 1f); trackEntry.Complete += OnLeftComplete; } if (Input.GetKeyDown(KeyCode.UpArrow) && trackClear) { PlayerManager.Instance.attacking = true; trackClear = false; trackEntry = _skeletonAnimation.state.SetAnimation(2, attack_back, false); trackEntry.mixDuration = 0f; // trackEntry.End += OnEnd; icePosition = IcePosition.ICE_BACK; StartCoroutine(PlayHitSound()); trackEntry.Complete += OnComplete; _skeletonAnimation.state.AddEmptyAnimation(2, 0.2f, _skeletonAnimation.state.GetCurrent(2).AnimationTime + 1f); } if (Input.GetKeyDown(KeyCode.DownArrow) && trackClear) { PlayerManager.Instance.attacking = true; trackClear = false; trackEntry = _skeletonAnimation.state.SetAnimation(2, attack_front, false); trackEntry.mixDuration = 0f; // trackEntry.End += OnEnd; icePosition = IcePosition.ICE_FRONT; StartCoroutine(PlayHitSound()); trackEntry.Complete += OnComplete; _skeletonAnimation.state.AddEmptyAnimation(2, 0.2f, _skeletonAnimation.state.GetCurrent(2).AnimationTime + 1f); } }
void OnTriggerEnter2D(Collider2D collider) { if (collider.CompareTag("Player")) { iceBreakSound = GameObject.FindGameObjectWithTag("IceBreakSound").GetComponent <AudioSource>(); iceBreakSound.Play(); print("obstaculo colidiu"); IcePosition pos = collider.GetComponent <IceBehaviour>().MyPosition; // Danifica a plataforma IceController.Instance.TakeDamageByElement(-dano, pos); IceController.Instance.ImmortalFunction(); gameObject.SetActive(false); } }
// public void Move (Tubarao tubarao, float velocidadeRodeio, float centerX, float centerY) // { // alpha += velocidadeRodeio; // X = centerX + (a * Mathf.Cos(alpha)); // Y = centerY + (b * Mathf.Sin(alpha)); // // Flips image when it reaches the max points of the ellipse // if(X - centerX <= -a + 0.1f && tubarao.isFacingLeft) // tubarao.Flip(); // else if(X - centerX >= a - 0.1f && !tubarao.isFacingLeft) // tubarao.Flip(); // // Set as the new position // tubarao.rb2D.position = new Vector3(X,Y); // } public IEnumerator Move (Tubarao tubarao, float velocidadeRodeio) { currentSurroundingTime = 0f; while(currentSurroundingTime <= surroundingTime) { float centerX = tubarao.urso.position.x; float centerY = tubarao.urso.position.y; alpha += (velocidadeRodeio * Time.deltaTime); X = centerX + (a * Mathf.Cos(alpha)); Y = centerY + (b * Mathf.Sin(alpha)); // Flips image when it reaches the max points of the ellipse if(X - centerX <= -a + 0.1f && tubarao.isFacingLeft) tubarao.Flip(); else if(X - centerX >= a - 0.1f && !tubarao.isFacingLeft) tubarao.Flip(); // Set as the new position tubarao.rb2D.position = new Vector3(X,Y); currentSurroundingTime += Time.deltaTime; yield return null; } // Desabilita barbatana for (int i = 0; i < children.Length; i++) { children[i] = transform.GetChild(i).gameObject; children[i].SetActive(false); } int plataformasDisponiveis = 0; List<IceBehaviour> l = new List<IceBehaviour>(); for(int i = 0; i< IceController.Instance.iceScripts.Length; i++) { if(IceController.Instance.iceScripts[i] != null && IceController.Instance.iceScripts[i].MyPosition != IcePosition.ICE_CENTER) { plataformasDisponiveis++; l.Add(IceController.Instance.iceScripts[i]); } } // Se ha plataformas disponiveis if((plataformasDisponiveis - SpawnerInimigo.dic.Count) > 0) { // Escolhe plataforma IceBehaviour ice = tubarao.Attack(l); IcePosition position = ice.MyPosition; float currentChewingTime = 0f; // Comeca a morder... while(tubarao.isAlive) { currentChewingTime += Time.deltaTime; // Apica dano a plataforma if(currentChewingTime > 1) { currentChewingTime = 0f; if(ice != null) { IceController.Instance.TakeDamageByElement(-tubarao.damagePerSecond, position); } // plataforma destruida else { tubarao.isAlive = false; SpawnerInimigo.dic.Remove(position); break; } // if(ice.Life <= 2) // { // } } yield return null; } // Quando player hitar o tubarao, pare a animcao de morder IceController.Instance.StopSharkAnim(position); } // Desabilita tubarao (caso nao haja plataformas disponiveis, simplesmente desaparece) gameObject.SetActive(false); }