PlayerController_v2 Mods

Below is the updated code designed to work with new versions of GameData that includes logic for the Inventory System for the simplified PlayerController_v2 script included with the simplified MiniGame provided here:

Note: Code for PlayerController_v2, don't use this if you have PlayerController.cs, because this version does not include the animator logic.

Updated Apr 13, 2019

public class PlayerController_v2 : MonoBehaviour {

    private Rigidbody2D rb2D;  //declare the variable
    public float forceX = 50f;  //this is probably too small
    private bool facingRight;

    public bool grounded; //tracks if player is touching ground
    private bool jump;  //has jump key (spacebar been pressed - last)
    public Transform groundCheck; //set in inspector, (add child to player - empty gameObject at player's feet)
    public LayerMask groundLayer;  //set in inspector
    public float groundCheckRadius = 0.2f;  //modify as needed
    public float jumpForce = 8f; //modify as needed

    // Use this for initialization
    void Start () {
        rb2D = GetComponent< Rigidbody2D >();   ///we made the connection with the component
        facingRight = true;
    }

    //Fixed Update is called at regular time intervals - use with Physics2D
    void FixedUpdate () {
        float inputX = Input.GetAxis("Horizontal");  //-1, 0, 1
        bool isWalking = Mathf.Abs(inputX) > 0;

        grounded = Physics2D.OverlapCircle(groundCheck.position, groundCheckRadius, groundLayer);

        bool jumpPressed = Input.GetButtonDown("Jump"); //spacebar was last key pressed

        if (jumpPressed)
        {
            jump = true;
        }
        else
        {
            jump = false;
        }

        if ( isWalking){

            if( inputX > 0 && !facingRight){
                Flip();
            }
            else if(inputX < 0 && facingRight){
                Flip();
            }
            rb2D.velocity = new Vector2(0, rb2D.velocity.y);
            rb2D.AddForce(new Vector2(inputX * forceX , 0));
                   } //end if isWalking

        if( jump && grounded)
        {
             rb2D.velocity = new Vector2(rb2D.velocity.x, 0); //zero out velocity.y, maintain velocity.x
            rb2D.AddForce(new Vector2(0f, jumpForce), ForceMode2D.Impulse); //add force as impulse

        }

    }

    /// <summary>
    /// THIS IS THE EVENT that starts the chain reaction of events
    /// </summary>
    /// <param name="collision">Collision.</param>
    //Customize to your game needs
  private void OnTriggerEnter2D(Collider2D collision)
    {
        if (collision.CompareTag("Collectible"))
        {
            //update score
            PickUp item = collision.GetComponent<PickUp>();
            GameData.instanceRef.Add(item.Value); //points for each specific item's value

            //add to inventory
            GameData.instanceRef.AddItem(item.itemInstance); //points for each specific item's value

            Debug.Log("Hit collectible");
            Destroy(collision.gameObject);
        }
        else if (collision.CompareTag("Hazard"))
        {
            //decrease health
            //what type of object has tag "Hazard"
            Hazard hazardItem = collision.GetComponent<Hazard>();

            if (hazardItem != null)
            {
                GameData.instanceRef.TakeDamage(hazardItem.Value);
            }
            else
            {
                Debug.Log("Collided with a different type Hazard");

            PickUp item = collision.GetComponent<PickUp>();
            if( item != null){
                GameData.instanceRef.TakeDamage(item.Value);
                }
            }
            Destroy(collision.gameObject);
        }
        else
        {
            Debug.Log("Hit Something Else");
        }
    } //end function

    private void Flip(){
        facingRight = !facingRight; //toggle this value
        Vector3 theScale = transform.localScale;
        theScale.x *= -1;  //we have changed the value
        transform.localScale = theScale;

    }

} //end Class

Last updated