Пример #1
0
 public void StopSharkAnim(IcePosition pos)
 {
     if (iceScripts[(int)pos] != null)
     {
         iceScripts[(int)pos].StopSharkAnimation();
     }
 }
Пример #2
0
 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);
        }
    }
Пример #4
0
    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);
 	}