Rull-en-ball

Introduksjon
Unity

Rull-en-ball

Denne uka skal vi lage vårt første spill! Spillet går ut på å være en ball og samle inn kuber for å få poeng. Spillet er over når man har samlet inn alle kubene.

Denne oppgaven tar utgangspunkt i Roll-a-Ball på Unity sine sider. Titlene i denne oppgaven er lenket direkte til videoene på Unity sine sider der det er aktuelt. Du finner også lenker til alle videoene på unity3d.com/learn/tutorials/projects/roll-ball-tutorial.

Steg 1: Omgivelser og spilleren

Introduksjon

Bildet nedenfor viser hvordan spillet ser ut når man er ferdig! I denne oppgaven lærer vi litt enkel fysikk, hvordan vi kan flytte spillobjekter med tastaturet, og kollisjon mellom objekter.

Oppsett av spillet

Bevege spilleren

  • Siden noen av dere jobber hjemmefra legger vi inn hele kodesnutten under. Ikke kopier den, men skriv inn alle linjene!

    PlayerController.cs

    using UnityEngine;
    using System.Collections;
    
    public class PlayerController : MonoBehaviour {
    
        public float speed = 10.0f;
    
        private Rigidbody rb;
    
        void Start ()
        {
            rb = GetComponent<Rigidbody>();
        }
    
        void FixedUpdate ()
        {
            float moveHorizontal = Input.GetAxis ("Horizontal");
            float moveVertical = Input.GetAxis ("Vertical");
    
            Vector3 movement = new Vector3 (moveHorizontal, 0.0f, moveVertical);
    
            rb.AddForce (movement * speed);
        }
    }
    
    

Test spillet

Klikk på Play-knappen øverst i Unity-editoren.

  • Trykk på piltastene, flytter ballen seg?
  • Hva skjer hvis du prøver å styre med tastene WASD?

Steg 2: Kamera og spilleområde

Flytte kameraet

  • CameraController.cs

    using UnityEngine;
    using System.Collections;
    
    public class CameraController : MonoBehaviour {
    
        public GameObject player;
    
        private Vector3 offset;
    
        void Start ()
        {
            offset = transform.position - player.transform.position;
        }
    
        void LateUpdate ()
        {
            transform.position = player.transform.position + offset;
        }
    }
    
    

Test spillet

Klikk på Play-knappen øverst i Unity-editoren.

  • Flytt ballen og se at kameraet følger etter den.

Sette opp spilleområdet

Test spillet

Klikk på Play-knappen øverst i Unity-editoren.

  • Prøv spillet og se at veggene er på plass.

Steg 3: Samle objekter og poeng

Lag objekter vi kan samle inn

  • Rotator.cs

    
    using UnityEngine;
    using System.Collections;
    
    public class Rotator : MonoBehaviour {
    
        void Update ()
        {
            transform.Rotate (new Vector3 (15, 30, 45) * Time.deltaTime);
        }
    }
    
    

Test spillet

Klikk på Play-knappen øverst i Unity-editoren.

  • Start spillet og se at alle kubene er gule og snurrer rundt!

Samle inn objekter

  • void OnTriggerEnter(Collider other)
    {
        if (other.gameObject.CompareTag ("Pick Up"))
        {
            other.gameObject.SetActive (false);
        }
    }
    

Vis poengscore

  • PlayerController.cs

    using UnityEngine;
    using System.Collections;
    
    public class PlayerController : MonoBehaviour {
    
        public float speed;
    
        private Rigidbody rb;
        public int count;                                   // Ny linje
    
        void Start ()
        {
            rb = GetComponent<Rigidbody>();
            count = 0;                                      // Ny linje
        }
    
        void FixedUpdate ()
        {
            float moveHorizontal = Input.GetAxis ("Horizontal");
            float moveVertical = Input.GetAxis ("Vertical");
    
            Vector3 movement = new Vector3 (moveHorizontal, 0.0f, moveVertical);
    
            rb.AddForce (movement * speed);
        }
    
        void OnTriggerEnter(Collider other)
        {
            if (other.gameObject.CompareTag("Pick Up"))
            {
                other.gameObject.SetActive (false);
                count = count + 1;                          // Ny linje
            }
        }
    
    }
    
  • PlayerController.cs

    using UnityEngine;
    using UnityEngine.UI;                                   // Ny linje
    using System.Collections;
    
    public class PlayerController : MonoBehaviour {
    
        public float speed;
        public Text countText;                              // Ny linje
    
        private Rigidbody rb;
        private int count;
    
        void Start ()
        {
            rb = GetComponent<Rigidbody>();
            count = 0;
            SetCountText ();                                // Ny linje
        }
    
        void FixedUpdate ()
        {
            float moveHorizontal = Input.GetAxis ("Horizontal");
            float moveVertical = Input.GetAxis ("Vertical");
    
            Vector3 movement = new Vector3 (moveHorizontal, 0.0f, moveVertical);
    
            rb.AddForce (movement * speed);
        }
    
        void OnTriggerEnter(Collider other)
        {
            if (other.gameObject.CompareTag("Pick Up"))
            {
                other.gameObject.SetActive (false);
                count = count + 1;
                SetCountText ();                            // Ny linje
            }
        }
    
        void SetCountText ()                                // Ny linje
        {                                                   // Ny linje
            countText.text = "Count: " + count.ToString (); // Ny linje
        }                                                   // Ny linje
    }
    
  • PlayerController.cs

    using UnityEngine;
    using UnityEngine.UI;
    using System.Collections;
    
    public class PlayerController : MonoBehaviour {
    
        public float speed;
        public Text countText;
        public Text winText;                                // Ny linje
    
        private Rigidbody rb;
        private int count;
    
        void Start ()
        {
            rb = GetComponent<Rigidbody>();
            count = 0;
            SetCountText ();
            winText.text = "";                              // Ny linje
        }
    
        void FixedUpdate ()
        {
            float moveHorizontal = Input.GetAxis ("Horizontal");
            float moveVertical = Input.GetAxis ("Vertical");
    
            Vector3 movement = new Vector3 (moveHorizontal, 0.0f, moveVertical);
    
            rb.AddForce (movement * speed);
        }
    
        void OnTriggerEnter(Collider other)
        {
            if (other.gameObject.CompareTag("Pick Up"))
            {
                other.gameObject.SetActive (false);
                count = count + 1;
                SetCountText ();
            }
        }
    
        void SetCountText ()
        {
            countText.text = "Count: " + count.ToString ();
            if (count >= 12)                                // Ny linje
            {                                               // Ny linje
                winText.text = "You Win!";                  // Ny linje
            }                                               // Ny linje
        }
    }
    

Test spillet

Klikk på Play-knappen øverst i Unity-editoren.

  • Prøv spillet og se hvor fort du klarer å samle inn alle kubene!

Utfordring 1: Bygg spillet slik at du kan dele det med vennene dine

Akkurat nå er det jo kun du som kan spille spillet ditt. I denne videoen vises det hvordan man kan bygge spillet til forskjellige platformer, for eksempel Windows eller Mac. Se om du klarer å bygge det slik at du kan dele det med vennene dine!

Forbedre denne siden

Funnet en feil? Kunne noe vært bedre? Hvis ja, vennligst gi oss tilbakemelding ved å lage en sak på Github eller fiks feilen selv om du kan. Vi er takknemlige for enhver tilbakemelding!

Rapporter et problemVis koden og fiks selv