Unity-3D 第一個小游戲開發(fā)

  • 準(zhǔn)備
    四張圖


    背景

    這里寫圖片描述

    這里寫圖片描述

    這里寫圖片描述

    以上

  • 將圖片拖入工具中


    這里寫圖片描述
  • 為除背景之外的每一張圖三都建立一個視圖層


    這里寫圖片描述

    這里寫圖片描述
  • 選擇僵尸的圖片,如圖操作,準(zhǔn)備將圖片切割


    這里寫圖片描述

    這里寫圖片描述

    這里寫圖片描述
  • 在此可以選擇需要適配的分辨率,也可以自己定義


    這里寫圖片描述
  • 觀察背景圖的像素和尺寸

    這里寫圖片描述

    由于背景的比例和我們所選的分辨率不和,在Main Camera中修改
    這里寫圖片描述

    640 / 100 / 2 = 3.2
    這里寫圖片描述

  • 建立一個c# Script腳本文件,來使我們所裁剪的僵尸圖片動起來

using UnityEngine;
using System.Collections;

public class Zembie : MonoBehaviour {
    public Sprite[] sprites;//建立精靈數(shù)組,用來存儲剪下來的圖
    public float framesspeed;//運(yùn)動的速度
    private SpriteRenderer spriterenderer;//定義一個渲染器
    // Use this for initialization
    void Start () {
        spriterenderer = GetComponent<SpriteRenderer>();
    }
    
    // Update is called once per frame
    void Update () {
        int index = (int)(Time.timeSinceLevelLoad * framesspeed);//指數(shù)來代表時間和速度的乘積
        index = index % sprites.Length;//因為用來顯示精靈數(shù)組,大小不能超過精靈數(shù)組的長度
        spriterenderer.sprite = sprites[index];//渲染器使圖片動起來
    }
}

  • 把腳本文件和僵尸圖片綁定


    這里寫圖片描述

    因為切了4張圖,所以size為4,將速度也填上


    這里寫圖片描述
  • 寫一個腳本使僵尸在Camera上發(fā)生位移
using UnityEngine;
using System.Collections;

public class ZembieControl : MonoBehaviour {
    public float movespeed;
    private Vector3 moveDirection; //vector3 三維 vector2 二維
    public float turnspeed;//轉(zhuǎn)頭   以單元為尺寸
    // Use this for initialization
    void Start () {
        moveDirection = Vector3.right;
    }
    
    // Update is called once per frame
    void Update () {
        Vector3 currentPostion = transform.position; //初始位置
        if (Input.GetButton ("Fire1"))
 {            //那是數(shù)字1 不是l  Fire1就是鼠標(biāo)左鍵 Fire2就是鼠標(biāo)右鍵
            Vector3 moveToward = Camera.main.ScreenToWorldPoint (Input.mousePosition);
            //移動后的方向即為鼠標(biāo)左鍵所點(diǎn)的方向
            moveDirection = moveToward - currentPostion;
            moveDirection.z = 0;
            moveDirection.Normalize ();//歸一化
        }
        Vector3 targetPostion = currentPostion + moveDirection * movespeed;//目標(biāo)方向
        transform.position = Vector3.Lerp (currentPostion, targetPostion, Time.deltaTime);
        //Vector3.Lerp()差值函數(shù)
        //由于不是閃現(xiàn)到達(dá),所以需要時間差值移動(原位置,目標(biāo)位置,差值時間)
        float tagetAngle = Mathf.Atan2 (moveDirection.y, moveDirection.x) * Mathf.Rad2Deg;
        //求角度   2:to   Mathf.Rad2Deg 弧度求角度 
        transform.rotation = Quaternion.Slerp (transform.rotation, Quaternion.Euler (0, 0, tagetAngle), turnspeed * Time.deltaTime);
        //rotation 旋轉(zhuǎn) p1:目標(biāo)位置 p2:角度 p3:每次旋轉(zhuǎn)多少
    }
}
  • 把腳本綁定到僵尸圖片上,修改速度


    這里寫圖片描述

運(yùn)行之后存有bug,鼠標(biāo)點(diǎn)擊之后僵尸會往那個方向跑,但是到達(dá)目的地之后并不會停下

  • 未完待續(xù)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容