当前位置: 首页 > 开发杂谈 >

Day 25 | 使用ManoMotion制作Flappy Bird游戏 Part1 - 障碍物山的移动与产生

今天要介绍最後一个小游戏,让我们开始吧!

目录
游戏机制介绍
障碍物-山的移动
障碍物-山随机产生

游戏机制介绍

只要侦测到手部Grab的动作,帝江就会往上飞一点,如果侦测到连续动作,帝江就会飞越高,玩家要用Grab动作控制帝江不要撞到并且飞越山脉。

使用素材

帝江

障碍物-山的移动

Step1 变数宣告

  • rec 稍後用来改变物件canvas的位置
  • speed 方便移动调整速度
RectTransform rec;
public float speed;

Step2 函式宣告

在山的产生器再产生山以後,用来给山呼叫的set函式,设定山的初始位置以及旋转。

  • setRec(RectTransform setPoint) 让生成器设定山的位置
  • setRotation() 如果是上面的山,就旋转z轴180度,并调整成上面山的位置。
public void setRec(RectTransform setPoint) {
        rec = setPoint;
    }
public void setRotation(){
    rec.localEulerAngles = new Vector3(0f, 0f, 180.0f);
    rec.anchoredPosition = new Vector3(2755, 440, 0);
}

Step3 移动

  • 山是往左边移动所以是-x,- new Vector3( speed * TimedeltaTime,0,0)。
void Update(){
    rec.position -= new Vector3(speed * Time.deltaTime, 0, 0);

}

以上就是山的移动,接下来是山的产生。

障碍物-山的随机产生

时间到了就会产生新的山,所以需要计数器、山的物件、以及要产山生的点。

Step1 变数宣告

  • f_nextGenTime 作为计数器
  • mountainPrefab 储存要产生的山物件
  • rec 储存生成山的UI位置的依据
float f_nextGenTime = 3;
public GameObject[] mountainPrefab;
public RectTransform rec;

Step2 判断产生时间到了没

先判断计数器超过1了没

  • 如果超过了就Random出一个整数,选择要产生的山。
  • 将Random数作为参数丢进产生山的函式。
  • 产山完就将计数器归零。
  • 如果计数器没有超过1,就计数。
void Update()
    {
        if (f_nextGenTime > 1f)
        {
            int num = Random.Range(0, 3);
            Generate(num);
            num = Random.Range(0, 3);
            GenerateAbove(num);
            f_nextGenTime = 0;
        }
        else {
            f_nextGenTime += Time.deltaTime;
        }
    }

Step3 山的产生函式

  • 将Random数作为参数,选择要产山的3种山的mountainPrefab
  • 利用Instantiate生成山,如果是下面的山就呼叫setRec(),如果是上面的山就呼叫set。
void Generate(int num) {
    GameObject mountain = Instantiate(mountainPrefab[num]) as GameObject;
    mountain.GetComponent<MountainMove>().setRec(rec);
    mountain.transform.SetParent(GameObject.FindGameObjectWithTag("canvas").transform, false); 
}

void GenerateAbove(int num){
    GameObject mountain = Instantiate(mountainPrefab[num]) as GameObject;
    mountain.GetComponent<MountainMove>().setRotation();
    mountain.transform.SetParent(GameObject.FindGameObjectWithTag("canvas").transform, false);

}


以上就是障碍物-山的移动与产生,明天会写到主角跳跃与手部侦测的部分,那就明天见罗~


相关文章:

  • wish商户平台如何手动输入各个活动的信息?
  • 【第3天】资料前处理-YOLOv4与自动框选中文字
  • Day18 iPhone捷径-这是在哪里拍摄的
  • Day 18: To DI ? Or not DI? 依赖注入的存在意义
  • Day 07 CSS <字体属性>
  • 亚马逊卖家服务费用很高?都有哪些?
  • 供wish商户使用的人民币本地货币功能
  • 亚马逊五大AI技术成果
  • Day 16 To Do List - 切版 1
  • 亚马逊fab 卖家操作流程
  • 30天完成家庭任务平台:第二十八天
  • JavaScript Day12 - DOM(1)
  • 全国跨境电商产教融合校企对接会:eBay人才认证体系瞄准跨境电商人才缺口
  • Day 21. Snapshot Test
  • 什么是亚马逊conpon,亚马逊conpon有哪些规则
  • 支持支付宝的国外VPS主机服务器大全:用支付宝买国外网站空间服务器VPS
  • 香港电话卡怎么在内地使用: CSL Hello/Three/CMHK/Smartone电话卡内地使用方法
  • 海外营销周报:谷歌在搜索中取消Q&A功能,FaceBook Marketplace用户总量达 10 亿人 – 知外贸
  • 阿里云OSS对象存储控制客户端
  • WordPress 调试模式基本指南
  • 寻找印度市场伙伴
  • 虚拟信用卡是什么?虚拟信用卡安全吗?怎么用?怎么申请教程
  • 国外VPS服务器主机为什么比较便宜?
  • WordPress主题怎么安装?WordPress主题模板安装失败怎么解决
  • 海外适合游戏投放的渠道有哪些?
  • 移动怎么开通香港电话号码
  • 外贸电商网络营销之心理营销如何做?让客户更信任你的产品和网站
  • 站点迁移问题:流量下降的 11 个潜在原因
  • 一键脚本/Superspeed: 一键测试服务器到国内的速度
  • 2021年10个全球电子商务趋势[信息图] ,所有电商人员都该了解一下