Station 10 - Ungaalborg | Mediehuset for unge fra 13-19 år i Aalborg Kommune

Hvordan får du en figur til at bevæge sig og hoppe som i en 2D sidescroller?


using UnityEngine;
using System.Collections;

public class TopDownMovement2D : MonoBehaviour
{

    public KeyCode ButtonLeft = KeyCode.LeftArrow;
    public KeyCode ButtonRight = KeyCode.RightArrow;
    public KeyCode ButtonJump = KeyCode.Space;

    public float PlayerSpeed = 400;
    public float PlayerJumpPower = 8;

    public Rigidbody2D PlayerRigidbody;

    void Update()
    {
        Vector2 playerFinalMovement = new Vector2(0, 0);

        // Vi gemmer accelerationen og sætter y til det
        // Prøv at fjerne denne linje og se forskellen.

        if (Input.GetKey(ButtonLeft))
        {
            playerFinalMovement.x = -1;
        }

        if (Input.GetKey(ButtonRight))
        {
            playerFinalMovement.x = 1;
        }

        if (Input.GetKeyDown(ButtonJump))
        {
            PlayerRigidbody.velocity += Vector2.up * PlayerJumpPower;
        }

        // Vores retning "Playerfinalmovement" sættes til hastigheden
        // Bliver ganget med den speed vi vil have på spilleren
        // og Time.deltaTime gør at speed er "i sekundet" og ikke per frarme
        PlayerRigidbody.velocity = new Vector2(playerFinalMovement.x * PlayerSpeed * Time.deltaTime, PlayerRigidbody.velocity.y);

    }
}

Du skal ikke tænke på det som at du vil have en figur til at hoppe og flytte sig rundt på skærmen. Tænk over hvad der sker i koordinatsystemet på objektet.

Hvis du vil have noget til at gå mod højre i et koordinatsystem?
Så er det et positivt tal i X retningen.

Hvad hvis den skal gå til venstre i koordinatsystemet?
Så er det i en negativ retning i X.

Hvis du vil have den til at hoppe?
Så er det positivt  i Y retningen. 

Så det du gerne vil er:

  1. Have den til at gå X plus/minus når du trykker på to forskellige tastaturknapper (f.eks. højre/venstre)
  2. Have den til at gå plus i Y når du trykker på en tastaturknap (f.eks. mellemrum)