Jumping, Falling and Landing 2D
Hi! I am young and also new with Unity, and I am trying to do a 2D platform game.
First of all, I'm just going to apologise for my bad english, because I am French, but I hope everything is going to be understood!
Okay... For now, my character can move around perfectly. As you may presume I am not coding all alone, I'm following a tutorial series on CasanisPlays' channel, and for now everything worked perfectly. But I did everything like he showed in his video ( https://www.youtube.com/watch?v=0-1fhp2kFlY ), and I am still having 2 errors. I tried for days to fix it, I commented on the video, but no answers and I find this quite sad because making the character jump is a base, and I can't continue to do my game because of those errors. So if someone could fix it and send in the comments the fixed version, I will be so happy !!!
1st one :(11,38): error CS1519: Unexpected symbol 2' in class, struct, or interface member declaration Second one :(46,13): error CS1525: Unexpected symbol
float'
Here is my script (C#)
using UnityEngine; using System.Collections;
public class playerControllet : MonoBehaviour {
//movement variables
public float maxSpeed;
//jumping variables
bool grounded = false;
float groundCheckRadius = 0,2f;
public LayerMask groundLayer;
public Transform groundCheck;
public float jumpHeight;
Rigidbody2D myRB;
Animator myAnim;
bool facingRight;
// Use this for initialization
void Start () {
myRB = GetComponent<Rigidbody2D>();
myAnim = GetComponent<Animator>();
facingRight = true;
}
// Update is called once per frame
void Update(){
if(grounded && Input.GetAxis("Jump")>0){
grounded = false;
myAnim.SetBool ("isGrounded",grounded);
myRB.AddForce(new Vector2(0,jumpHeight));
}
}
void FixedUpdate() {
//check if we are grounded - if no, then we are falling
grounded = Physics2D.OverlapCircle(groundCheck.position,groundCheckRadius,groundLayer);
myAnim.SetBool ("isGrounded",grounded);
myAnim.SetFloat("VerticalSpeed", myRB.velocity.y)
float move = Input.GetAxis("Horizontal");
myAnim.SetFloat("Speed", Mathf.Abs(move));
myRB.velocity = new Vector2(move * maxSpeed, myRB.velocity.y);
if (move > 0 && !facingRight) {
flip();
} else if (move < 0 && facingRight) {
flip();
}
}
void flip()
{
facingRight = !facingRight;
Vector3 theScale = transform.localScale;
theScale.x *= -1;
transform.localScale = theScale;
}
}
Answer by NinjaISV · Sep 03, 2016 at 07:14 PM
The problem that is causing errors are just simple mistakes that are super easy to make. The first one is when you declare groundCheckRadius
you use a comma instead of a period for the value. The next one is just a missing semi-colon on line 39 after myAnim.SetFloat("VerticalSpeed", myRB.velocity.y)
.
An image highlighting the problems:
Here is the script back to you in %100 working order:
using UnityEngine;
using System.Collections;
public class playerControllet : MonoBehaviour {
//movement variables
public float maxSpeed;
//jumping variables
bool grounded = false;
float groundCheckRadius = 0.2f;
public LayerMask groundLayer;
public Transform groundCheck;
public float jumpHeight;
Rigidbody2D myRB;
Animator myAnim;
bool facingRight;
// Use this for initialization
void Start () {
myRB = GetComponent<Rigidbody2D>();
myAnim = GetComponent<Animator>();
facingRight = true;
}
// Update is called once per frame
void Update(){
if(grounded && Input.GetAxis("Jump")>0){
grounded = false;
myAnim.SetBool ("isGrounded",grounded);
myRB.AddForce(new Vector2(0,jumpHeight));
}
}
void FixedUpdate() {
//check if we are grounded - if no, then we are falling
grounded = Physics2D.OverlapCircle(groundCheck.position,groundCheckRadius,groundLayer);
myAnim.SetBool ("isGrounded",grounded);
myAnim.SetFloat("VerticalSpeed", myRB.velocity.y);
float move = Input.GetAxis("Horizontal");
myAnim.SetFloat("Speed", Mathf.Abs(move));
myRB.velocity = new Vector2(move * maxSpeed, myRB.velocity.y);
if (move > 0 && !facingRight) {
flip();
} else if (move < 0 && facingRight) {
flip();
}
}
void flip()
{
facingRight = !facingRight;
Vector3 theScale = transform.localScale;
theScale.x *= -1;
transform.localScale = theScale;
}
}
Your answer
![](https://koobas.hobune.stream/wayback/20220612092121im_/https://answers.unity.com/themes/thub/images/avi.jpg)