private void OnTriggerEnter2D(Collider2D collision) { if (state == BronyState.Slamming) { state = BronyState.Resting; restingTimer = restingTime; CameraShaker.Instance.ShakeOnce(7, 7, .5f, 1); color = (EnemyColor)Random.Range(1, 4); switch (color) { case EnemyColor.Green: spr.color = green; break; case EnemyColor.Purple: spr.color = purple; break; case EnemyColor.yellow: spr.color = yellow; break; case EnemyColor.Orange: spr.color = orange; break; } } if (collision.tag == "Player") { playerTransform.GetComponent <PlayerMovement>().Damage(); } }
public void Damage() { if (state == BronyState.Resting) { HP--; if (HP <= 0) { Instantiate(explotion, transform.position, Quaternion.identity); CameraShaker.Instance.ShakeOnce(10, 10, .5f, 1); playerTransform.GetComponent <PlayerMovement>().WinStance(); Destroy(gameObject); } state = BronyState.Seeking; spr.color = Color.white; } }
private void Update() { if (playerTransform.position.x < transform.position.x) { spr.flipX = true; } else { spr.flipX = false; } if (actvated) { if (audioTimer <= 0) { audioSource.PlayOneShot(bronySounds[Random.Range(0, bronySounds.Count - 1)]); audioTimer = audioInterval; } else { audioTimer -= Time.deltaTime; } if (state == BronyState.Seeking) { float distanceToPlayer = Vector2.Distance(transform.position, playerTransform.position); rb.MovePosition(transform.position + (playerTransform.position - transform.position).normalized * speed * Time.deltaTime); if (distanceToPlayer <= distanceToSlam) { state = BronyState.Elevating; rb.gravityScale = 0; } } if (state == BronyState.Elevating) { transform.position = Vector3.Lerp(transform.position, new Vector3(transform.position.x, slamHeight), slamRaiseSpeed); if (Vector2.Distance(transform.position, new Vector2(transform.position.x, slamHeight)) < .1f) { state = BronyState.Hovering; } } if (state == BronyState.Hovering) { if (playerTarget == Vector2.zero) { playerTarget = new Vector2(playerTransform.position.x, slamHeight); } transform.position = Vector2.Lerp(transform.position, playerTarget, slamRaiseSpeed); if (Vector2.Distance(transform.position, playerTarget) < .1f) { playerTarget = Vector2.zero; state = BronyState.Slamming; } } if (state == BronyState.Slamming) { rb.gravityScale = 1; rb.AddForce(new Vector2(0, -1) * slamSpeed); } if (state == BronyState.Resting) { if (restingTimer <= 0) { state = BronyState.Seeking; spr.color = Color.white; color = EnemyColor.None; } else { restingTimer -= Time.deltaTime; } } } }