0
\$\begingroup\$

so, I followed below tutorial.

https://unity3d.com/learn/tutorials/modules/beginner/live-training-archive/creating-a-basic-platformer-game

Going well until 18:50 (video time in tutorial), when the tutor compiles and able to move and jump the character. And then, when I try it, mine was not moving or jumping at all.

So, how to move the character?

I've also tried some solutions on the video's youtube comments, but nothing works.

P.S. I'm not new to C# at all, but new to Unity development. I'm using Unity 5.

Thanks.

Update : Here are the props screenshots and Controller c# code :

Cube

Cube prop screenshot

Hero

Hero (1) prop screenshot Hero (2) prop screenshot

SimplePlatformController

using UnityEngine;
using System.Collections;

public class SimplePlatformController : MonoBehaviour {

[HideInInspector] public bool facingRight = true;
[HideInInspector] public bool jump = false;

public float moveForce = 365f;
public float maxSpeed = 5f;
public float jumpForce = 1000f;
public Transform groundCheck;

private bool grounded = false;
private Animator anim;
private Rigidbody2D rb2d;

// Use this for initialization
void Awake () 
{
    anim = GetComponent<Animator> ();
    rb2d = GetComponent<Rigidbody2D> ();
}

// Update is called once per frame
void Update () 
{
    grounded = Physics2D.Linecast(
        transform.position,
        groundCheck.position, 
        1 << LayerMask.NameToLayer("Ground"));

    if (Input.GetButtonDown ("Jump") && grounded) 
    {
        jump = true;
    }

}

void fixedUpdate()
{
    float h = Input.GetAxis ("Horizontal");

    anim.SetFloat ("Speed", Mathf.Abs (h));

    if (h * rb2d.velocity.x < maxSpeed) 
        rb2d.AddForce (Vector2.right * h * moveForce);

    if (Mathf.Abs (rb2d.velocity.x) > maxSpeed)
        rb2d.velocity = new Vector2 (
            Mathf.Sign (rb2d.velocity.x) * maxSpeed, 
            rb2d.velocity.y);

    if ((h > 0 && facingRight) || (h < 0 && !facingRight))
        Flip ();

    if (jump) 
    {
        anim.SetTrigger ("Jump");
        rb2d.AddForce (new Vector2 (0f, jumpForce));
        jump = false;
    }
}

void Flip()
{
    facingRight = !facingRight;
    Vector3 theScale = transform.localScale;
    theScale.x *= -1;
    transform.localScale = theScale;
}

}

\$\endgroup\$
  • \$\begingroup\$ when was the last time in the video that it compiled and moved? \$\endgroup\$ – Justin Markwell Aug 31 '15 at 18:58
  • \$\begingroup\$ @Justin : about 18:50 \$\endgroup\$ – Moses Aprico Aug 31 '15 at 18:59
1
\$\begingroup\$

Make sure the ground layer is set to ground on the cubes layer.

Drag the groundCheck object to the new slot on the platform controller script that is visible when selecting the hero object.

Also make sure the hero has his rigidbody2d not set to kinematic.

And that the ground cube does not have a normal collider and is replaced with a 2d collider

edit - or fix a typo from void fixedUpdate() to

void FixedUpdate()
\$\endgroup\$
  • \$\begingroup\$ i checked it again, and I think I've did it all. Do I need to add the input manually? \$\endgroup\$ – Moses Aprico Sep 1 '15 at 2:23
  • \$\begingroup\$ it should work I thought for sure you had to delete the boxcollider on the ground and put a 2dboxcollider on. Or make sure the ground layer was named "Ground". show some of the code you are using that is in that part of the video. \$\endgroup\$ – Justin Markwell Sep 1 '15 at 2:28
  • \$\begingroup\$ Please see the OP, I've updated the details. \$\endgroup\$ – Moses Aprico Sep 1 '15 at 2:45
  • \$\begingroup\$ void FixedUpdate() \$\endgroup\$ – Justin Markwell Sep 1 '15 at 3:19
  • \$\begingroup\$ Hmm.. I havent checked it out, since im not with my computer. But assuming you are right, then, why mono doesn't handle such error? Maybe returning error or something? Or maybe make it override? Since it'll be safer that way. \$\endgroup\$ – Moses Aprico Sep 1 '15 at 4:54

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.