and now that the health works my player has 500 hundred health and takes one hit and goes to 400 but yet still dies
here’s my player code
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Player : MonoBehaviour
{
[Header("Player")]
[SerializeField] float moveSpeed = 10f;
[SerializeField] float padding = 1f;
[SerializeField] int health = 100;
[SerializeField] AudioClip deathSFX;
[SerializeField] [Range(0, 1)] float deathSoundVolume = 0.7f;
/* [SerializeField] AudioClip shootSound;
[SerializeField] [Range(0, 1)] float shootSoundVolume = 0.25f;
[SerializeField] [Range(0, 1)] float; */ // for shoot sfx
[Header("laser")]
[SerializeField] GameObject laserprefab;
[SerializeField] float projectileSpeed = 10f;
[SerializeField] float projectileFiringPeriod = 0.1f;
Coroutine firingCoroutine;
float xMin;
float xMax;
float yMin;
float yMax;
// Start is called before the first frame update
void Start()
{
SetUpMoveBoundaries();
}
// Update is called once per frame
void Update()
{
Move();
Fire();
}
private void OnTriggerEnter2D(Collider2D other)
{
DamageDealer damageDealer = other.gameObject.GetComponent<DamageDealer>();
if(!damageDealer) { return; }
ProcessHit(damageDealer);
}
private void ProcessHit(DamageDealer damageDealer)
{
health -= damageDealer.GetDamage();
if (health <= 0)
damageDealer.Hit();
{
Die();
}
}
public int GetHealth()
{
return health;
}
private void Die()
{
FindObjectOfType<Level>().LoadGameOver();
Destroy(gameObject);
AudioSource.PlayClipAtPoint(deathSFX, Camera.main.transform.position, deathSoundVolume);
}
private void Fire()
{
if (Input.GetButtonDown("Fire1"))
{
firingCoroutine = StartCoroutine(FireContinuosly());
}
if (Input.GetButtonUp("Fire1"))
{
StopCoroutine(firingCoroutine);
}
}
IEnumerator FireContinuosly()
{
while (true)
{
GameObject laser = Instantiate(laserprefab, transform.position, Quaternion.identity) as GameObject;
laser.GetComponent<Rigidbody2D>().velocity = new Vector2(0, projectileSpeed);
// AudioSource.PlayClipAtPoint(shootSound, Camera.main.transform.position, shootSoundVolume); for shoot sfx
yield return new WaitForSeconds(projectileFiringPeriod);
}
}
private void Move()
{
var deltaX = Input.GetAxis("Horizontal") * Time.deltaTime * moveSpeed;
var deltaY = Input.GetAxis("Vertical") * Time.deltaTime * moveSpeed;
var newXPos = Mathf.Clamp(transform.position.x + deltaX, xMin, xMax);
var newYPos = Mathf.Clamp(transform.position.y + deltaY, yMin, yMax);
transform.position = new Vector2(newXPos, newYPos);
}
private void SetUpMoveBoundaries()
{
Camera gameCamera = Camera.main;
xMin = gameCamera.ViewportToWorldPoint(new Vector3(0, 0, 0)).x + padding;
xMax = gameCamera.ViewportToWorldPoint(new Vector3(1, 0, 0)).x - padding;
yMin = gameCamera.ViewportToWorldPoint(new Vector3(0, 0, 0)).y + padding;
yMax = gameCamera.ViewportToWorldPoint(new Vector3(0, 1, 0)).y - padding;
}
}