首页 > 其他 > 详细

口袋妖怪_金沙(游戏开发)一

时间:2020-04-19 02:48:04      阅读:42      评论:0      收藏:0      [点我收藏+]

口袋妖怪开发:

注:本游戏素材来自爱给网,其源代码由本人编写,本游戏不做商业用途。

该游戏基于Unity3D引擎开发,用于自学者,独立游戏开发者阅读更佳~

在开发之前,首先注意:该文适合初学者,但不要太白哦~我会为大家说明我的思路,但是思路图可能画的不是很好,慢点吐槽T.T

ok,下边我们需要一个demo,因为每一个游戏的开发,都需要一个游戏雏形来定位游戏的玩法,以及开发的方向和数据的管控,这些都是必不可少的因素。

在Unity3D中,我们搭建一个2D场景,先用一些图片作为地面(看个人爱好),然后将摄像机的背景设置为黑色

技术分享图片

因为传统的口袋妖怪一些墙的视角是黑色的,所以我们这里不再纠结于此~

引入我们的角色,我这里是将摄像机当做角色的子物体来跟随角色,因为后续的开发中,我们会有菜单,我们会打开精灵背包,所以为了方便对接。

在此,就开始了我们的第一个脚本啦~

脚本名称:play(作为挂载角色的脚本,并且用来做出移动的判断,这里只发一部分代码,后续可能有改进或者增加,之后再说)

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

//这里因为作者已经开发好几天了,所以就将初步的代码用红色标识,其他的代码读者可以后续理解
public class play : MonoBehaviour { public float Movespeed;//移动速度,这里建议不要私有,第一,这个需要我们去调试,第二,我们后边会有自行车这个道具,会改变速度,所以要公开这个数据 public Sprite []Moverotation;//(上)(上左)(上)(上右)(下)(下左)(下)(下右)(左)(左左)(左)(左右)(右)(右左)(右)(右右)所有的移动图片,我们将所有的图片都按照这个顺序赋值 public bool pand = false; public float upgo_upleft, upleftgo_up, upgo_upright, uprightgo_up; public float timeleet = 0;//图片切换间隔() //private float h, v; // Update is called once per frame public float movetimeset = 1;// 移动切换的总阀值 public int faceleet = 8;//0上,8左,4下,12右 角色当前的朝向,这个数据很重要,对我们后期的开发有很大的作用 private SpriteRenderer sr; private void Awake() { sr = GetComponent<SpriteRenderer>(); } void FixedUpdate () {//这里建议使用FixedUpdate,因为Unpdate更新的不是很稳定 /*h = Input.GetAxisRaw("Horizontal");其他方案 v = Input.GetAxisRaw("Vertical"); transform.Translate(Movespeed * h * Vector3.right, Space.World); transform.Translate(Movespeed * v * Vector3.up, Space.World);*/ //移动 if(!pand) Moveplay(); //打开背包 Backget(); } void Moveplay() { //****待优化**** if (Input.GetKey("w"))//上 { transform.Translate(Movespeed * Vector3.up, Space.World); //移动时切换图片 faceleet = MoveSwitch(1, 2, 3, 0); } else if(Input.GetKey("a"))//左 { transform.Translate(-Movespeed * Vector3.right, Space.World); //移动时切换图片 faceleet = MoveSwitch(9, 10, 11, 8); } else if(Input.GetKey("s"))//下 { transform.Translate(-Movespeed * Vector3.up, Space.World); //移动时切换图片 faceleet = MoveSwitch(5, 6, 7, 4); } else if(Input.GetKey("d"))//右 { transform.Translate(Movespeed * Vector3.right, Space.World); //移动时切换图片 faceleet = MoveSwitch(13, 14, 15, 12); }else { timeleet = 0; sr.sprite = Moverotation[faceleet]; } //Debug.Log(faceleet);//测试 } int MoveSwitch(int w, int a, int s, int d)//图片切换,我们将每次末尾的数字返回,因为这个变量有移动重置的图片,我们的角色要稍微人性化一点 {,w if(timeleet < movetimeset) { timeleet += Time.fixedDeltaTime; if (timeleet < upgo_upleft) { sr.sprite = Moverotation[w]; }else if(timeleet < upleftgo_up) { sr.sprite = Moverotation[a]; }else if(timeleet < upgo_upright) { sr.sprite = Moverotation[s]; }else if(timeleet < uprightgo_up) { sr.sprite = Moverotation[d]; } }else { timeleet = 0; } return d;//返回朝向 } //打开背包 void Backget() { if(Input.GetKeyDown("i")) { if(pand) { pand = false; }else { pand = true; } } } }

等待后续更新,各位大佬点个赞吧~

Orz

口袋妖怪_金沙(游戏开发)一

原文:https://www.cnblogs.com/yylgoodjob/p/12727843.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!