This tutorial explains how to set up a fall detector in a Unity 2D game that detects when the player has fallen off a platform or off the map and respawns the player back to a checkpoint. This will be covered across three tutorials. We will look at how to add checkpoints in the next tutorial.
Sample code
Here is the sample C# code for the PlayerController script up to the point shown in the above video. This script will be completed in the next two tutorials.
using UnityEngine; using System.Collections; public class PlayerController : MonoBehaviour { public float speed = 5f; public float jumpSpeed = 8f; private float movement = 0f; private Rigidbody2D rigidBody; public Transform groundCheckPoint; public float groundCheckRadius; public LayerMask groundLayer; private bool isTouchingGround; private Animator playerAnimation; // Use this for initialization void Start () { rigidBody = GetComponent<Rigidbody2D> (); playerAnimation = GetComponent<Animator> (); } // Update is called once per frame void Update () { isTouchingGround = Physics2D.OverlapCircle (groundCheckPoint.position, groundCheckRadius, groundLayer); movement = Input.GetAxis ("Horizontal"); if (movement > 0f) { rigidBody.velocity = new Vector2 (movement * speed, rigidBody.velocity.y); transform.localScale = new Vector2(0.1483552f,0.1483552f); } else if (movement < 0f) { rigidBody.velocity = new Vector2 (movement * speed, rigidBody.velocity.y); transform.localScale = new Vector2(-0.1483552f,0.1483552f); } else { rigidBody.velocity = new Vector2 (0,rigidBody.velocity.y); } if(Input.GetButtonDown ("Jump") && isTouchingGround){ rigidBody.velocity = new Vector2(rigidBody.velocity.x,jumpSpeed); } playerAnimation.SetFloat ("Speed", Mathf.Abs (rigidBody.velocity.x)); playerAnimation.SetBool ("OnGround", isTouchingGround); } void OnTriggerEnter2D(Collider2D other){ if (other.tag == "FallDetector") { // what will happen when the player enters the fall detector code (this will be added later) } if (other.tag == "Checkpoint") { respawnPoint = other.transform.position; } } }
Next tutorial: Adding checkpoints in the game