My health potion worked and now it doesn't.
I have a health potion in my 2d game that is supposed to give 2 hp back. At first it did. But then I added some map elements and now it only gives 1hp back. The code hasn't changed. I don't know what is going on.
I don't know if this is the right way to go about making a health potion but I am really new and this is the only thing I could think to do. It worked at first. haha
Potion code: { private float health; private float maxHealth;
void Start ()
{
maxHealth = 1;
health = maxHealth;
}
void Update ()
{
}
public void GiveHealth(float amount)
{
health -= amount;
if (health <= 0)
Destroy (gameObject);
}
}
Player Code with potion reference: { private float speed; public float health; public float maxHealth;
void Start ()
{
speed = 5;
maxHealth = 3;
health = maxHealth;
}
void Update ()
{
float axisX = Input.GetAxis ("Horizontal");
float axisY = Input.GetAxis ("Vertical");
transform.Translate(new Vector3(axisX, axisY) * Time.deltaTime * speed);
}
void OnCollisionEnter2D(Collision2D coll)
{
if (coll.gameObject.tag == "Enemy")
{
health--;
if (health <= 0)
Destroy (gameObject);
coll.gameObject.GetComponent<Enemy> ().ReceiveDamage (1);
}
if (coll.gameObject.tag == "Potion")
{
health++;
if (health <= 0)
Destroy (gameObject);
coll.gameObject.GetComponent<Potion> ().GiveHealth (2);
}
}
}
Answer by PersianKiller · Feb 19, 2018 at 05:34 AM
actually I have no idea what is this potion going to do :) it seems that it just increases it's health xD
i guess you want when your player collides with the potion,potion gives some health to the player
so you need a healthManager script to handle heal stuff
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class healthManager : MonoBehaviour {
public int health;
public Text healthText;
public void IncreaseHealth(int amount){//when you pick a potion, you should use this function to increase player's health
health += amount;
healthText.text = health.ToString ();
}
}
and potion script
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class potion : MonoBehaviour {
public int healthAmount;
void OnTriggerEnter2D(Collider2D other){
if(other.CompareTag("Player")){
other.GetComponent<healthManager> ().IncreaseHealth(healthAmount);
Destroy (gameObject);
}
}
}
so when you collide with a potion it will increase your health.
watch this too
Your answer
Follow this Question
Related Questions
I have two different objects I would like to check when A and B gameObjects are collided ? 1 Answer
Cart objects clips with rigidbody objects 0 Answers
How can i restart a script on collision ? 1 Answer
Unity 2D colliders not triggering,Unity 2D collider not triggering 0 Answers
How to snap a placeable object on wall & move on to other walls of a room? 0 Answers