- Home /
Question by
BlankSlates · Sep 16, 2018 at 06:50 PM ·
player2d-platformerenumbegginer
Beginner trying to stop movement function and collision on death ?
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Animations;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
public class playerController : MonoBehaviour
{
[SerializeField]
private Animator playeranim;
private Rigidbody2D rb2d;
// private BoxCollider2D box2d;
[SerializeField]
private int thrust = 100;
[SerializeField]
private int jumpHeight = 50;
[SerializeField]
private int canJump;
private Vector2 direction;
enum State { Alive, Death, levelclear}
State state = State.Alive;
bool collisionsAreEnabled = true;
// Use this for initialization
void Start ()
{
rb2d = gameObject.GetComponent<Rigidbody2D>();
// box2d = gameObject.GetComponent<BoxCollider2D>();
}
// Update is called once per frame
void Update ()
{
// RotateDirection();
playeranim = gameObject.GetComponent<Animator>();
if (state == State.Alive)
{
rigidbodymovement();
}
}
private void FixedUpdate()
{
rb2d.velocity = new Vector2(rb2d.velocity.x, Mathf.Clamp(rb2d.velocity.y, -5f, 4f));
}
private void rigidbodymovement()
{
if (Input.GetKey(KeyCode.D))
{
playeranim.SetInteger("running", 2);
rb2d.AddForce(transform.right * thrust * Time.deltaTime);
}
else if (Input.GetKey(KeyCode.A))
{
playeranim.SetInteger("running", 2);
rb2d.AddForce(-transform.right * thrust * Time.deltaTime);
}
else
playeranim.SetInteger("running", 0);
playeranim.SetInteger("jump", 0);
if (Input.GetKeyDown(KeyCode.Space)) // todo fix double jump and a glitch where the player turns his body when jumping and controls glitch
{
if( canJump > 1)
{
canJump = canJump - 1;
rb2d.AddForce(new Vector2(0, 1) * jumpHeight * Time.deltaTime);
}
}
{
}
// }
//else
//{
// playeranim.SetBool("is_Running", false);
// playeranim.SetBool("is_Idle", true);
// }
}
private void OnCollisionEnter2D(Collision2D collision)
{
if (state != State.Alive || !collisionsAreEnabled)
{
return; // ignore collisions when dead
}
switch ( collision.gameObject.tag)
{
case "water":
{
playeranim.SetInteger("death", 2);
Invoke("death", 1f);
break;
}
case "floor":
{
Debug.Log("i am touching the floor");
canJump = 2;
break;
}
default:
{
// stop the audio if i add background music here
state = State.Death;
canJump = 1;
break;
}
}
}
private void RotateDirection()
{
transform.Rotate(direction);
direction = Vector2.zero;
if (Input.GetKey(KeyCode.A))
{
direction += new Vector2(0, 1);
}
if (Input.GetKey(KeyCode.D))
{
direction += new Vector2(0,1 );
}
}
private void death()
{
SceneManager.LoadScene(0);
}
}
Comment