使用Unity3D 5.3.4 模仿2D游戏 FlappyBird(二)
来源:互联网 发布:巨鹿之战 知乎 编辑:程序博客网 时间:2024/05/18 03:30
继续上一篇博客,这篇我们继续完成剩下的内容。
我们先让背景循环播放起来。在Scripts文件夹下新建一个c#脚本,名字取做BackgroundTransform。给Prefabs文件夹下的bg添加此脚本。编辑脚本:
using UnityEngine;using System.Collections;public class BackgroundTrandform : MonoBehaviour { public float moveSpeed = 3f; //定义背景移动的速度 private Transform bgTrans; //获取背景的Transform组件 Vector3 bgPos; //获取当前背景图片的位置 // Use this for initialization void Start () { bgTrans = GetComponent<Transform>(); } // Update is called once per frame void Update () { //每一帧都让背景向左移动 bgTrans.Translate(Vector3.left * moveSpeed * Time.deltaTime); //获取当前帧的背景图片的位置 bgPos = bgTrans.position; //当第一张图片移动到相机外时,把他的位置拼接到最后。这样就可以实现背景的循环播放 //数据是通过在scene面板拖动得到的 if (bgPos.x < -4.81) { bgTrans.position = new Vector3(9.62f, 0, 0); } }}
在Scripts文件夹下新建脚本CreatePipe,给Prefabs下的pipe添加此脚本。编辑脚本:
using UnityEngine;using System.Collections;public class CreatePipe : MonoBehaviour { public GameObject pipe; //用来获取障碍 public float createTime = 1; //用来记录创建障碍的间隔 // Use this for initialization void Start () { //过0秒后调用createPipe() 然后每隔createTime秒调用一次 InvokeRepeating("createPipe", 0, createTime); } // Update is called once per frame void Update () { } void createPipe() { //因为障碍物的位置改变只有上下,所以随机获取他的y值 float y = Random.Range(-1.74f, 2.72f); //创建一个pipe,位置是上下随机的,其他不变,没有旋转 Instantiate(pipe, new Vector3(transform.position.x, y, 0), Quaternion.identity); }}
同样的,pipe也需要移动,Scripts文件夹下新建PipeTransform脚本,给Prefabs文件夹下的pipe添加。编辑:
using UnityEngine;using System.Collections;public class PipeTransform : MonoBehaviour { public float moveSpeed = 3f; //定义移动速度和背景一样,否则不协调 private Transform pipeTrans; //获取Transform组件 Vector3 pipePos; //获取当前的位置 // Use this for initialization void Start () { pipeTrans = GetComponent<Transform>(); } // Update is called once per frame void Update () { //每一帧都向左移动 pipeTrans.Translate(Vector3.left * moveSpeed * Time.deltaTime); //获取当前帧的图片的位置 pipePos = pipeTrans.position; //当图片移动到相机外时,把他销毁 if (pipePos.x < -3.27f) { Destroy(gameObject); } }}
这样就实现了背景循环播放,障碍随机产生并销毁。可以运行来查看效果。
给bird添加一个Rigidbody2D,然后再Scripts文件夹下新建一个Bird脚本,给bird添加此脚本,编辑:
using UnityEngine;using System.Collections;public class Bird : MonoBehaviour { private Rigidbody2D birdRig; //获取Rigidbody2D组件 public float upSpeed = 5; //定义点击时给小鸟的向上的力的大小 // Use this for initialization void Start () { birdRig = GetComponent<Rigidbody2D>(); } // Update is called once per frame void Update () { //当按下空格键时 if (Input.GetKeyDown(KeyCode.Space)) { //给小鸟添加一个向上的速度 birdRig.velocity = Vector2.up * upSpeed; } }}
现在运行已经基本上可以玩了,就差一些碰撞和结束的判断了,剩下的在下一篇博客中继续讲解。
本博客用作新手学习讨论,如有不好或错误的地方也请指出来,谢谢。
0 0
- 使用Unity3D 5.3.4 模仿2D游戏 FlappyBird(二)
- 使用Unity3D 5.3.4 模仿2D游戏 FlappyBird(二)
- 使用Unity3D 5.3.4 模仿2D游戏 FlappyBird(一)
- 使用Unity3D 5.3.4 模仿2D游戏 FlappyBird(三)
- 使用Unity3D 5.3.4 模仿2D游戏 FlappyBird(四)
- 使用Unity3D 5.3.4 模仿2D游戏 FlappyBird(一)
- 使用Unity3D 5.3.4 模仿2D游戏 FlappyBird(三)
- 使用Unity3D 5.3.4 模仿2D游戏 FlappyBird(四)
- Unity3D UNET 模仿局域网游戏(二)
- Unity制作2D游戏FlappyBird
- Unity3D游戏开发之使用Unity3D开发2D游戏(二)(2DTookit插件亲测)
- Unity3D游戏开发之使用Unity3D开发2D游戏(二)(2DTookit插件亲测)
- Unity3D游戏开发之使用Unity3D开发2D游戏(二)(2DTookit插件亲测)
- 基于Unity3D的2d拾宝游戏(二)
- Unity3D UNET 模仿局域网游戏(一)
- Unity3D UNET 模仿局域网游戏(三)
- Unity3D 2D游戏开发 官方教程。(二)
- Unity3D研究院之2D游戏开发制作原理(二十一)
- Java语言的接口
- JS:ajax
- Acticle 9:javascript技术--ajax基本知识
- Python中的for循环(序列、元组与字典)
- python字符串的处理
- 使用Unity3D 5.3.4 模仿2D游戏 FlappyBird(二)
- 使用servlet处理http响应
- android Fragment与Activity交互,互相发数据(附图详解)
- Ubuntu 安装mysql和 简单命令操作
- hadoop2.7.1在centos6.5下集群安装配置
- Android Studio如何使用Git提交代码到GitHub和OsChina并解决冲突
- 面试(五)
- 那些天的日记
- HDU 1016 Prime Ring Problem