分享Unity3D学习 愤怒的小鸟之Play界面(二)

2015年03月21日 11:22 0 点赞 0 评论 更新于 2017-05-08 04:44

目标

制作Play界面的背景,并实现背景循环滚动的效果。

具体步骤

1. 利用GUITexture搭建背景

此步骤的操作方法与我上篇博客所写一致,关键在于留意每个Texture的位置,将它们拼接成一个大背景。拼接完成后,创建一个空的GameObject,把这些Texture组合起来,这样便于统一管理。

需要注意的是,修改Z轴数值可以改变各个Texture的前后显示顺序。例如,若要让Texture1显示在Texture2前面,只需将Texture1的Z轴数值设置得更大即可。

2. 编写脚本实现背景循环移动

原理

原理较为简单,即利用两张背景图进行循环切换。同时,如果在两张背景图循环切换时发现有空隙,可将每张背景图的宽度设置为略大于屏幕显示宽度。

代码实现

以下是实现背景循环移动的代码:

#pragma strict

var moveSpeed : float = 0.1;

function Start () {
// 此处可添加初始化代码,目前为空
}

function Update () {
transform.Translate(Vector3.left * moveSpeed * Time.deltaTime);
if (transform.position.x <= -1) {
transform.position.x = 1;
}
}

代码解释

  • var moveSpeed : float = 0.1;:定义了背景移动的速度,这里设置为0.1。
  • function Start () {...}:该函数在脚本实例被启用时调用,目前函数体为空,可根据需要添加初始化代码。
  • function Update () {...}:该函数在每一帧都会被调用。transform.Translate(Vector3.left * moveSpeed * Time.deltaTime); 实现了背景向左移动,Time.deltaTime 用于确保移动速度与帧率无关。if (transform.position.x <= -1) { transform.position.x = 1; } 用于判断背景是否移动到了指定位置,如果是,则将其位置重置,从而实现循环移动的效果。

测试

将上述代码赋给两个背景对象,然后运行项目进行测试。

作者信息

menghao

menghao

共发布了 332 篇文章