Cześć robię gre 2D w unity. Działa mi poruszanie gracza, skakanie oraz respawn po kolizji z obiektami powodującymi śmierć gracza. Chciałam dodać serduszka więc dodałam trzy obrazki do interfejsu UI oraz stworzyłam tablice w kodzie i dodałam tam te trzy obrazki. I póki co działa tak że usuwa jedno serce po kolizji, a chciałabym żeby drugie i ostatnie też się usuwały odpowiednio za drugą i trzecią śmiercią oraz po trzeciej śmierci żeby była możliwość wczytania innej sceny. Byłabym wdzięczna za pomoc bo zielona trochę w tym jestem.
using System.Collections;
using UnityEngine;
using UnityEngine.UI;
public class Player : MonoBehaviour
{
private float horizontal;
private float speed = 6f;
private float jumpingPower = 8f;
private bool isFacingRight = true;
public Image[] heartImages;
public float maxHealth = 3f;
public float currentHealth;
[SerializeField] private Rigidbody2D rb;
[SerializeField] private Transform groundCheck;
[SerializeField] private LayerMask groundLayer;
private Vector3 respawnPoint;
void Start()
{
currentHealth = maxHealth;
respawnPoint = transform.position;
}
void Update()
{
horizontal = Input.GetAxisRaw("Horizontal");
if (Input.GetButtonDown("Jump") && IsGrounded())
{
rb.velocity = new Vector2(rb.velocity.x, jumpingPower);
}
if (Input.GetButtonUp("Jump") && rb.velocity.y > 0f)
{
rb.velocity = new Vector2(rb.velocity.x, rb.velocity.y * 1f);
}
Flip();
}
private void FixedUpdate()
{
rb.velocity = new Vector2(horizontal * speed, rb.velocity.y);
}
private bool IsGrounded()
{
return Physics2D.OverlapCircle(groundCheck.position, 0.2f, groundLayer);
}
private void Flip()
{
if (isFacingRight && horizontal < 0f || !isFacingRight && horizontal > 0f)
{
isFacingRight = !isFacingRight;
Vector3 localScale = transform.localScale;
localScale.x *= -1f;
transform.localScale = localScale;
}
}
private void OnTriggerEnter2D(Collider2D collision)
{
if(collision.tag == "Enemy")
{
transform.position = respawnPoint;
Destroy(heartImages[heartImages.Length - 1]);
}
}
}