Hi Everyone! I need a little help figuring out this code. For some reason with a collision my object doesn’t dissapear/hide.
The code is below:
using System.Collections;
using UnityEngine.UI;
using UnityEngine;
public class PlayerController : MonoBehaviour {
public float speed; //Floating point variable to store the player's movement speed.
public float jump;
float moveVelocity;
public Text countText;
public Text winText;
private int count;
private Rigidbody2D rb2d; //Store a reference to the Rigidbody2D component required to use 2D Physics.
//Grounded Vars
bool grounded = true;
// Use this for initialization
void Start()
{
//Get and store a reference to the Rigidbody2D component so that we can access it.
rb2d = GetComponent<Rigidbody2D> ();
count = 0;
SetCountText ();
winText.text ="";
}
void Update ()
{
//Jumping
if (Input.GetKeyDown (KeyCode.Space) || Input.GetKeyDown (KeyCode.UpArrow) || Input.GetKeyDown (KeyCode.Z) || Input.GetKeyDown (KeyCode.W))
{
if(grounded)
{
GetComponent ().velocity = new Vector2 (GetComponent ().velocity.x, jump);
}
}
moveVelocity = 0;
//Left Right Movement
if (Input.GetKey (KeyCode.LeftArrow) || Input.GetKey (KeyCode.A))
{
moveVelocity = -speed;
}
if (Input.GetKey (KeyCode.RightArrow) || Input.GetKey (KeyCode.D))
{
moveVelocity = speed;
}
GetComponent<Rigidbody2D> ().velocity = new Vector2 (moveVelocity, GetComponent<Rigidbody2D> ().velocity.y);
}
// // Check if Grounded
void OnTriggerEnter2D()
{
grounded = true;
}
void OnTriggerExit2D()
{
grounded = false;
}
//FixedUpdate is called at a fixed interval and is independent of frame rate. Put physics code here.
void FixedUpdate()
{
//Store the current horizontal input in the float moveHorizontal.
float moveHorizontal = Input.GetAxis ("Horizontal");
//Store the current vertical input in the float moveVertical.
float moveVertical = Input.GetAxis ("Vertical");
//Use the two store floats to create a new Vector2 variable movement.
Vector3 movement = new Vector3 (moveHorizontal, 0.0f, moveVertical);
//Call the AddForce function of our Rigidbody2D rb2d supplying movement multiplied by speed to move our player.
rb2d.AddForce (movement * speed);
// Update is called once per frame. this is where our physics code will go
}
//OnTriggerEnter2D is called whenever this object overlaps with a trigger collider.
void OnTriggerEnter2D(Collider2D other)
{
//Check the provided Collider2D parameter other to see if it is tagged "PickUp", if it is...
if (other.gameObject.CompareTag("PickUp"))
{
other.gameObject.SetActive(false);
}
}
void SetCountText ()
{
countText.text ="countText:" + count.ToString();
if (count>=12){
winText.text= "You Win!";
}
}
}