2015-08-29

Paprastas Android žaidimas naudojant Unity3D

Papasakosime, kaip naudojant Unity variklį sukurti paprastą žaidimą ant Android sistemos. Galutinį žaidimo variantą gausime panašų į šį paveikslėlį:
Pirma dalis. 

Pradžioje sukuriame naują sceną File -> New Scene.
Aplanke "Assets" sukuriame dar du aplankus: "Scripts" ir "Sprites".
Vėliau žemiau pateiktus paveikslėlius perkeliame į "Sprites" aplanką.
Filter mode pasirenkame "Point":

Perkeliame į sceną personažo paveikslėlį, porą platformų ir foną. Rezultatas turėtų gautis panašus į šį:
Pridedame mūsų personažui tokius komponentus: Rigidbody2D,CircleCollider2D ir uždraudžiame judėjimą pagal Z ašį. Visoms platformoms pridedam komponentą: BoxCollider2D.
Pridedam į sceną tris Image per GameObject -> UI -> Image. Tai ir bus mūsų tolimesnis interfeisas (mygtukai į kairę, dešinę ir šokinėti).
Parenkame dydį ir keliaujame į sekantį žingsnį. Image, kuris nurodo į kairę pusę keliame į kairę, o kuris į dešinę dešinėn pusėn.
 
Kiekvieną paveikslėlį "Source Image" velkame savus paveikslėlius. Rezultate turime gauti:

Antra dalis.

Sukuriame aplanke "Scripts" naują skriptą ir pavadiname jį "CharController" (kodą rašysime ant C#). Pridedame sukurtame skripte šį kodą:

using UnityEngine;
using System.Collections;

public class CharController : MonoBehaviour {
    public Rigidbody2D rb2d;
    public float playerSpeed;
    public float jumpPower;
    public int directionInput;
    public bool groundCheck;
    public bool facingRight = true;


    void Start () 
    {
        rb2d = GetComponent();

    }
    
    
    void Update () 
    {
        if ((directionInput < 0) && (facingRight))
        {
            Flip();
        }

        if ((directionInput > 0) && (!facingRight))
        {
            Flip();
        }
        groundCheck = true;
    }

    public void Move(int InputAxis)
    {
        directionInput = InputAxis;
        rb2d.velocity = new Vector2(playerSpeed * directionInput, rb2d.velocity.y);
    }

    public void Jump(bool isJump)
    {
        isJump = groundCheck;
        
        if (groundCheck)
        {         
            rb2d.velocity = new Vector2(rb2d.velocity.x, jumpPower);
        }
        
    }

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


}

Kodą susieti su personažu mums padės Event System. Dėl visa ko pervadinkime mygtukus, kad nesusimaišytume. Pavyzdžiui "leftButton", "rightButton", "jumpButton". Pridedam kiekvienam mygtukui komponentą Event Trigger.
Dabar mygtukui "į kairę" komponente Event Trigger sukurkite du naujus įvykius - PointerDown ir PointerExit.
PointerDown ir PointerExit sukurkite po vieną įvykį. Spaudžiame ant iškylančio meniu ir surandame skriptą "CharController" -> void "Move(int)".
Analogiškai viską atliekame su mygtuku "į dešinę". Mygtukui "šokinėti" pridedam tik PointerEnter -> CharController -> Jump(bool). Atėjo laikas pridėti vertes.

Personažui:
Mygtukui "į kairę":
Mygtukui "į dešinę" taip pat pakeičiame vertę PointerDown, tik į "1".
Paleidžiame mūsų projektą:
Taigi štai toks paprastas žaidimukas sukurtas su Unity3D ant Android. Tikimės tiems kam reikės susidurti su šiuo varikliu bus lengviau atlikti paprastą platforminį judėjimą ant Android.

Pasiremta: habrahabr.ru

Komentarų nėra:

Rašyti komentarą