飞扬的小鸟
来源:互联网 发布:java运行库32位 编辑:程序博客网 时间:2024/05/01 11:41
飞扬的小鸟:
先制作管子 先创建一个平面PLANE,把管子图片导入到assess中,在创建一个材质球,属性设置为透明并且diffuse,然后把图片拖给材质球,然后把材质球给plane调整好大小,然后在复制一个给其子集,调整好两者之间的距离,这样就做好了预制件,拖到assess,创建一个GameObject命名Runing,把照相机rest给runing,然后给管子写制作代码及其移动的代码。
制作代码:
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class Pipel : MonoBehaviour {
public Transform prefab;预制件
public Vector3 startPosition;初始位置
Vector3 nextPosition;下一个位置
Vector3 lastPosition;
Queue<Transform> queuePie;队列
public int queueLength;队列长度
public float minX;
public float maxX;
public float minY;
public float maxY;
public float sY;
public float xY;
public float offSet;
public static float midOffSet;
// Use this for initialization
void Start () {
midOffSet = offSet;
queuePie = new Queue<Transform>(queueLength);
for (int i = 0; i < queueLength; i++)
{
queuePie.Enqueue((Transform)GameObject.Instantiate(prefab));
}
nextPosition = startPosition;
lastPosition = startPosition;
for (int i = 0; i < queueLength; i++)
{
Sereng();
}
}
private void Sereng()
{
float x = Random.Range(minX,maxX);
int isUp = Random.Range(1, 3);
float y=Random.Range(minY,maxY);
Transform o = queuePie.Dequeue();
Vector3 midPosition = nextPosition;
midPosition.x += o.localScale.x / 2;
if (isUp== 1)
{
midPosition.y += y;
}
if (isUp == 2)
{
midPosition.y -= y;
}
if (midPosition.y >= sY+startPosition.y)
{
midPosition.y -=2* y;
}
if (midPosition.y <= xY+startPosition.y)
{
midPosition.y += 2 * y;
}
o.localPosition = midPosition;
nextPosition.x += o.localScale.x+x;
nextPosition.y = o.localPosition.y;
queuePie.Enqueue(o);
}
// Update is called once per frame
void Update () {
Vector3 mid;
if (MainCamera.distance - queuePie.Peek().localPosition.x >= offSet)
{
for (int i = 0; i < queueLength;i++ )
{
Transform o= queuePie.Dequeue();
if (i == queueLength - 1)
{
mid = o.localPosition;
nextPosition.x = mid.x + o.localScale.x / 2 + Random.Range(minX, maxX);
}
queuePie.Enqueue(o);
}
Sereng();
}
}
}
移动代码:
using UnityEngine;
using System.Collections;
public class PipelMove : MonoBehaviour {
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
transform.Translate(Time.deltaTime * -5f, 0, 0);
}
}
制作背景图片:创建一个PLANE,制作预制件,把云调整好位置,形成预制件,给背景图片写代码:
产生代码:
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class CloudMade : MonoBehaviour {
public Transform cloud;
public Vector3 cloudScal;
public Vector3 startPosition;
Vector3 nextPosition;
Queue<Transform> queueCloud;
public int queueLength;
// Use this for initialization
void Start () {
queueCloud = new Queue<Transform>(queueLength);
for (int i = 0; i < queueLength; i++)
{
queueCloud.Enqueue((Transform)GameObject.Instantiate(cloud));
}
nextPosition = startPosition;
for (int i = 0; i < queueLength; i++)
{
Sereng();
}
}
private void Sereng()
{
Transform o = queueCloud.Dequeue();
o.localScale = cloudScal;
Vector3 midPosition = nextPosition;
midPosition.x += o.localScale.x / 2;
o.position = nextPosition;
nextPosition.x += o.localScale.x;
queueCloud.Enqueue(o);
}
// Update is called once per frame
void Update () {
Vector3 mid;
if (MainCamera.distance - queueCloud.Peek().localPosition.x >= Pipel.midOffSet)
{
for (int i = 0; i < queueLength; i++)
{
Transform o = queueCloud.Dequeue();
if (i == queueLength - 1)
{
mid = o.localPosition;
nextPosition.x = mid.x + o.localScale.x / 2;
}
queueCloud.Enqueue(o);
}
Sereng();
}
}
}
移动代码
using UnityEngine;
using System.Collections;
public class CloudMove : MonoBehaviour {
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
transform.Translate(Time.deltaTime * -5f, 0, 0);
}
}
草地和云一样的
产生代码
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class Land : MonoBehaviour {
public Transform land;
public Vector3 landScal;
public Vector3 startPosition;
Vector3 nextPosition;
Queue<Transform> queueLand;
public int queueLength;
// Use this for initialization
void Start () {
queueLand = new Queue<Transform>(queueLength);
for (int i = 0; i < queueLength; i++)
{
queueLand.Enqueue((Transform)GameObject.Instantiate(land));
}
nextPosition = startPosition;
for (int i = 0; i < queueLength; i++)
{
Sereng();
}
}
private void Sereng()
{
Transform o = queueLand.Dequeue();
o.localScale = landScal;
Vector3 midPosition = nextPosition;
midPosition.x += o.localScale.x / 2;
o.position = nextPosition;
nextPosition.x += o.localScale.x;
queueLand.Enqueue(o);
}
// Update is called once per frame
void Update () {
Vector3 mid;
if (MainCamera.distance - queueLand.Peek().localPosition.x >= Pipel.midOffSet)
{
for (int i = 0; i < queueLength; i++)
{
Transform o = queueLand.Dequeue();
if (i == queueLength - 1)
{
mid = o.localPosition;
nextPosition.x = mid.x + o.localScale.x / 2;
}
queueLand.Enqueue(o);
}
Sereng();
}
}
}
移动代码
using UnityEngine;
using System.Collections;
public class LandMove : MonoBehaviour {
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
transform.Translate(Time.deltaTime *-5f, 0, 0);
}
}
- NOIP2014 飞扬的小鸟
- NOIP2014飞扬的小鸟
- NOIP2014飞扬的小鸟
- 飞扬的小鸟
- NOIP2014 飞扬的小鸟
- noip2014飞扬的小鸟
- JZOJ4716. 飞扬的小鸟
- 飞扬的小鸟
- 飞扬的小鸟
- 【NOIP2014】飞扬的小鸟
- 飞扬的小鸟
- noip2014飞扬的小鸟
- 飞扬的小鸟 noip2014
- NOIP2014 飞扬的小鸟
- [noip2014tg] 飞扬的小鸟
- [NOIP2014]飞扬的小鸟
- [NOIP2014] 飞扬的小鸟
- 【NOIP2014】飞扬的小鸟
- 23种设计模式简要说明
- x265-1.7版本-common/framedata.h注释
- db2 建库命令
- 批处理复制文件并重命名
- [转]Linux环境下安装Nginx+Pcre+zlib+OpenSSL
- 飞扬的小鸟
- qt+opencv学习进程记录
- String,StringBuilder,StringBuffer
- 【iOS开发】UIBezierPath
- getParameter() 和 getAttribute()
- 一些关于调试与对拍什么的东西
- [微积分学习]Day 1.极限引例
- Caffe + ubuntu 15.10 64bit + opencv 3.0.0 + atlas + cuda7.5 + cudnnv4.0+Anaconda2配置过程记录文档
- swift自学笔记(二)(循环、条件判断、可选变量、函数、面向对象)