美文网首页
Unity-3D 第一个小游戏开发

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

作者: 一世长安乱 | 来源:发表于2018-04-10 16:32 被阅读0次
    • 准备
      四张图


      背景
      这里写图片描述
      这里写图片描述
      这里写图片描述

      以上

    • 将图片拖入工具中


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


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


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


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

      这里写图片描述
      由于背景的比例和我们所选的分辨率不和,在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<SpriteRenderer>();
        }
        
        // 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 第一个小游戏开发

          本文链接:https://www.haomeiwen.com/subject/desnhftx.html