Unity-3D 第一个小游戏开发

  • 准备
    四张图


    背景

    这里写图片描述

    这里写图片描述

    这里写图片描述

    以上

  • 将图片拖入工具中


    这里写图片描述
  • 为除背景之外的每一张图三都建立一个视图层


    这里写图片描述

    这里写图片描述
  • 选择僵尸的图片,如图操作,准备将图片切割


    这里写图片描述

    这里写图片描述

    这里写图片描述
  • 在此可以选择需要适配的分辨率,也可以自己定义


    这里写图片描述
  • 观察背景图的像素和尺寸

    这里写图片描述

    由于背景的比例和我们所选的分辨率不和,在Main Camera中修改
    这里写图片描述

    640 / 100 / 2 = 3.2
    这里写图片描述

  • 建立一个c# Script脚本文件,来使我们所裁剪的僵尸图片动起来

using UnityEngine;
using System.Collections;

public class Zembie : MonoBehaviour {
    public Sprite[] sprites;//建立精灵数组,用来存储剪下来的图
    public float framesspeed;//运动的速度
    private SpriteRenderer spriterenderer;//定义一个渲染器
    // Use this for initialization
    void Start () {
        spriterenderer = GetComponent();
    }
    
    // Update is called once per frame
    void Update () {
        int index = (int)(Time.timeSinceLevelLoad * framesspeed);//指数来代表时间和速度的乘积
        index = index % sprites.Length;//因为用来显示精灵数组,大小不能超过精灵数组的长度
        spriterenderer.sprite = sprites[index];//渲染器使图片动起来
    }
}

  • 把脚本文件和僵尸图片绑定


    这里写图片描述

    因为切了4张图,所以size为4,将速度也填上


    这里写图片描述
  • 写一个脚本使僵尸在Camera上发生位移
using UnityEngine;
using System.Collections;

public class ZembieControl : MonoBehaviour {
    public float movespeed;
    private Vector3 moveDirection; //vector3 三维 vector2 二维
    public float turnspeed;//转头   以单元为尺寸
    // 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"))
 {            //那是数字1 不是l  Fire1就是鼠标左键 Fire2就是鼠标右键
            Vector3 moveToward = Camera.main.ScreenToWorldPoint (Input.mousePosition);
            //移动后的方向即为鼠标左键所点的方向
            moveDirection = moveToward - currentPostion;
            moveDirection.z = 0;
            moveDirection.Normalize ();//归一化
        }
        Vector3 targetPostion = currentPostion + moveDirection * movespeed;//目标方向
        transform.position = Vector3.Lerp (currentPostion, targetPostion, Time.deltaTime);
        //Vector3.Lerp()差值函数
        //由于不是闪现到达,所以需要时间差值移动(原位置,目标位置,差值时间)
        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 旋转 p1:目标位置 p2:角度 p3:每次旋转多少
    }
}
  • 把脚本绑定到僵尸图片上,修改速度


    这里写图片描述

运行之后存有bug,鼠标点击之后僵尸会往那个方向跑,但是到达目的地之后并不会停下

  • 未完待续

你可能感兴趣的:(Unity-3D 第一个小游戏开发)