Unity: Rull-en-ball
Skrevet av: Oversatt fra unity3d.com
Oversatt av: Bjørn Fjukstad
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!