It will walk on the surface just fine, but it will never take any damage.
Top is the section of code I’m working with, bottom is the full player script
void OnCollisionEnter2D(Collision2D coll)
{
if (!invincible)
{
if (coll.gameObject.name == "Lava")
{
StartCoroutine(Hurt());
}
}
}
private IEnumerator Hurt()
{
healthPoints--;
animator.SetTrigger("PlayerHurt");
invincible = true;
HealthText.text = "HP: " + healthPoints;
yield return new WaitForSeconds(3);
invincible = false;
}
[code=CSharp]using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI; //Allows us to use UI.
using UnityEngine.SceneManagement;
public enum Direction { LEFT, RIGHT };
public class PlayerPlatformerController : PhysicsObject {
public bool invincible = false;
public int score = 0;
private int ore = 50;
private int chip = 25;
private int EPup = 5;
private int HPup = 2;
public float maxSpeed = 3f;
public float jumpTakeOffSpeed = 5f;
public float flyingPower = 2.25f;
public int slashPower = 3;
public int shootPower = 1;
public Text ScoreText;
public Text HealthText;
public Text EnergyText;
public bool isShooting = false;
public bool isSlashing = false;
public bool isFlying = false;
public int energyPoints = 20;
public int healthPoints = 10;
private SpriteRenderer spriteRenderer;
private Animator animator;
private Direction playerDirection = Direction.RIGHT;
//private Transform _transform;
public GameObject Energy;
protected void Start()
{
spriteRenderer = GetComponent<SpriteRenderer> ();
animator = GetComponent<Animator> ();
//_transform = GetComponent(typeof(Transform)) as Transform;
// energy = GameManager.instance.energyPoints;
ScoreText.text = "Score: " + score;
EnergyText.text = "Energy: " + energyPoints;
HealthText.text = "HP: " + healthPoints;
}
private void OnDisable()
{
// GameManager.instance.energyPoints = energy;
}
private void OnTriggerEnter2D(Collider2D other)
{
if (other.tag == "Exit")
{
//put stuff
}
else if (other.tag == "Chip")
{
score += chip;
ScoreText.text = "Score: " + score;
}
else if (other.tag == "Ore")
{
score += ore;
ScoreText.text = "Score: " + score;
}
else if (other.tag == "EPup")
{
energyPoints += EPup;
EnergyText.text = "Energy: " + energyPoints;
}
else if (other.tag == "HPup")
{
healthPoints += HPup;
HealthText.text = "HP: " + healthPoints;
}
}
void OnCollisionEnter2D(Collision2D coll)
{
if (!invincible)
{
if (coll.gameObject.name == "Lava")
{
StartCoroutine(Hurt());
}
}
}
private IEnumerator Hurt()
{
healthPoints--;
animator.SetTrigger("PlayerHurt");
invincible = true;
HealthText.text = "HP: " + healthPoints;
yield return new WaitForSeconds(3);
invincible = false;
}
public Direction PlayerDirection
{
get
{
return playerDirection;
}
}
void Update()
{
AttackSlash();
ComputeVelocity();
AttackEnergy();
}
void AttackSlash()
{
if (Input.GetKeyDown(KeyCode.Z))
{
animator.SetTrigger("PlayerSlash");
}
}
void AttackEnergy()
{
if (Input.GetKeyDown(KeyCode.X) && energyPoints > 0 )
{
var tEnergy = Instantiate(Energy, gameObject.transform.position, Energy.transform.rotation) as GameObject;
tEnergy.GetComponent<Energy>().energyDirection = PlayerDirection;
animator.SetTrigger("PlayerEnergy");
energyPoints--;
EnergyText.text = "Energy: " + energyPoints;
isShooting = true;
if (!Input.GetKeyUp(KeyCode.X))
{
isShooting = true;
}
}
if (Input.GetKeyUp(KeyCode.X))
{
isShooting = false;
}
if (energyPoints < 0)
{
energyPoints = 0;
}
if (energyPoints > 20)
{
energyPoints = 20;
}
}
protected override void ComputeVelocity()
{
Vector2 move = Vector2.zero;
move.x = Input.GetAxis ("Horizontal");
if (move.x > 0.01f)
{
playerDirection = Direction.RIGHT;
}
else if (move.x < -0.01f)
{
playerDirection = Direction.LEFT;
}
if (Input.GetButtonDown ("Jump") && grounded) {
velocity.y = jumpTakeOffSpeed;
animator.SetTrigger("PlayerFlap");
isFlying = true;
animator.SetTrigger("PlayerFly");
} else if (Input.GetButtonDown ("Jump"))
{
animator.SetTrigger("PlayerFlap");
velocity.y = flyingPower;
isFlying = true;
animator.SetTrigger("PlayerFly");
}
if (move.x > 0.01f)
{
animator.SetTrigger("PlayerMove");
if (spriteRenderer.flipX == true)
{
spriteRenderer.flipX = false;
}
}
else if (move.x < -0.01f)
{
animator.SetTrigger("PlayerMove");
if (spriteRenderer.flipX == false)
{
spriteRenderer.flipX = true;
}
}
animator.SetBool ("grounded", grounded);
animator.SetFloat ("velocityX", Mathf.Abs (velocity.x) / maxSpeed);
// animator.SetBool("flying", isFlying);
targetVelocity = move * maxSpeed;
}
}
[/code]