User:SPARTROY
Components
[edit]> Foreground/Platform
[edit]- 2D Box Collider
> Player
[edit]- 2D Box Collider
- 2D Rigid Body
>Trapdoor
[edit]- Fixed-platform
[edit]- 2D Rigid body (Change to Kinematic)
- 2D Box Collider
- Rotating-platform
[edit]- 2D Rigid body
- 2D Box Collider
- 2D Hinge Joint
- Connect the fixed with the rotating
- use motor (100,-100)
- use limits
>Explosion
- Edge Collider 2D
Animator
[edit]From idle to walk | speed | greater |
---|---|---|
From idle to walk | speed | smaller |
From Any state to jump | grounded | true |
From jump to idle | grounded | false |
//Remove exit time
Checkpoints
[edit]Create 3 Empty game objects
- Checkpoint (Add a empty game object at the flag)
- Script
public void OnTriggerEnter2D(Collider2D other)
{
if (other.name =="Sonic_0"/*name of the character sprite*/)
{
FindObjectOfType<LevelManager>().CurrentCheckpoint = this.gameObject;
}
}
- LevelManager
- Script
- Add these variables
- public GameObject CurrentCheckpoint;
- public Transform player;
public void RespawnPlayer()
{
FindObjectOfType<control/*Script of controlling player*/>().transform.position = CurrentCheckpoint.transform.position;
}
- Spike
- Script
public void OnTriggerEnter2D(Collider2D other)
{
if (other.name == "Sonic_0"/*name of the character sprite*/)
{
FindObjectOfType<LevelManager>().RespawnPlayer();
}
}
- 2D Box Collider(Tick is Triggered)
Game Variables & Coding
[edit]//movement
[edit]public float player_speed;
public float jump_height;
//controlling keys
[edit]public KeyCode Jump;
public KeyCode Left;
public KeyCode Right;
//Utilities
[edit]public Transform groundCheck;
public float GND_Radius;
public LayerMask WhatisGND;
public bool grounded;
Controlling Player
[edit]//Moving Right
[edit]if (Input.GetKey(Right))
{
GetComponent<Rigidbody2D>().velocity = new Vector2(-player_speed, GetComponent<Rigidbody2D>().velocity.y);
if (GetComponent<SpriteRenderer>() != null)
{
GetComponent<SpriteRenderer>().flipX = true;
}
}
//Moving Left
[edit]if (Input.GetKey(Left))
{
GetComponent<Rigidbody2D>().velocity = new Vector2(player_speed, GetComponent<Rigidbody2D>().velocity.y);
if (GetComponent<SpriteRenderer>() != null)
{
GetComponent<SpriteRenderer>().flipX = false;
}
}
}
//Jump
[edit]void Jump()
{
GetComponent<Rigidbody2D>().velocity = new Vector2(GetComponent<Rigidbody2D>().velocity.x, jump_height);
}
void FixedUpdate()
{
grounded = Physics2D.OverlapCircle(groundCheck.position, GND_Radius, WhatisGND);
}
//For Animation
[edit]anime.SetFloat("Speed", Mathf.Abs(GetComponent<Rigidbody2D>().velocity.x));
anime.SetBool("Grounded", grounded);