pstatus"> 本帖最后由 艾西格亚 于 2013-10-15 07:34 编辑
这次项目里面需要实现一个3D的翻书效果,找资料,找插件:找到了两个比较好的插件,一个是:Mega-Fiers (随后分享)这个插件是用来做Mesh变形的,超级不错的插件。但是没有时间研究,只是拿来用了一个其中的一小部分功能,那就是用Book等几个脚本。另外一个叫 3D Flipping Book 专门做书的特效的。但是看起来比较复杂——用XML加载方式等等。没具体研究,这里就不做过多讨论,应该也挺帅的。 下面我就简单介绍一下 这本书用Mega-Fiers的怎么做的。 具体效果:
1. 导入插件 基本和其他插件一样,拖拽就可以了。导入后增加了两个地方的菜单栏: 一个是GameObject里面的另一个是组件里面的一些。不过我没有深入研究,暂且用一用Book相关的吧。
2. PageMesh PageMesh是组成书的主要GameObject,我们可以通过创建一个是体会一下: GameObject—>CreateOther—>MegaShape—>ageMesh 我们就创建了一个PageMesh 的GameObject
我们可以查看一下PageMesh的组件属性:
主要设置的属性就是书的前页和后页,主要使用材质来控制。 以及 长、宽、高等等 我们这里不做设置。我们随笔给两个材质。 PageMesh是书的主要部件,我们给单个的PageMesh添加组件: Component—>Modifiers—>Modifier Object 以及 Component—>Modifiers—>age Flip 这两个组件。 然后,在PageFlip 组件里面有一个属性是:Turn 可以调节大小,我们用鼠标调节的时候发现 这一页可以滚动了。这里就是页面翻动效果的实现了。 接下来我们做一本书!哦耶! 0.新建一个Book的GameObject的物体做总的父物体。 1. 创建封皮和尾页。 新建空的GameObject 并命名 FrontPage和BackPage 然后新建两个PageMesh 并稍微调剂一个属性,如图:(前后页一样)
然后,拖拽到相对应的刚才新建的GameObject。 2.建立三个状态的页面:这三个页面分别用来表示翻过去的页面。正在翻的页面。以及将要翻起来的页面,三个状态。 这三个页面就是我们刚才建立的单个页面一样,并是这三个页面也作为Book的子物体。属性设置成为如图所示:
这个时候,整本书的样式结构已经出来了:如图所示:
3.添加Book脚本 选中 Book (父物体) 选择Script—>MegaBook 添加到了Book上面,属性面板如图所示,
我们所要呈现的东西都在这个里面添加: 前页 后页 Page1 Page2 Page3 以及所有要显示的页面的Picture等等 都要在这个属性面板上设置。我们按着这个设置好。 这时候,我们滚动属性值BookAlpha 发现书可以滚动了! 有些小毛病可以调节一下其他的值。 4.程序控制:我使用的是用点击控制BookAlpha的方式。 创建两个Colider 放在书的前面
在总的父物体上添加脚本
=======桑心,还是没有代码的输入框!!================================- <span style="background-color: white;">using UnityEngine;
- using System.Collections;
- public class BookManager : MonoBehaviour
- {
- public GameObject Book;
- // Use this for initialization
- bool showBook = false;
- int pageCount;
- public static float fadeOfEveryPage;
- void Start()
- {
- pageCount = (Book.GetComponent<MegaBook>().pages.Count) / 2 + 2;
- fadeOfEveryPage = 100.0f / pageCount;
- }
- public static float targetAlpha = 0;
- public static float currenAlpha = 0;
- void Update()
- {
- currenAlpha = iTween.FloatUpdate(currenAlpha, targetAlpha, 3);
- Book.GetComponent<MegaBook>().bookalpha = currenAlpha;
- }
- }</span>
复制代码 =========================================================
我们使用了Itween里面的 FloatUpdate 方式,是值的变化 线型插值完成。 时间为3秒在左右的碰撞检测的里面设置=========================================================- <span style="background-color: white;">using UnityEngine;
- using System.Collections;
- public class RightBookPage : MonoBehaviour
- {
- void Update()
- {
- //Debug.Log("curr:" + LeftBookPage.currenAlpha + "aaaa" + "target:" + LeftBookPage.targetAlpha);
- //LeftBookPage.currenAlpha = iTween.FloatUpdate(LeftBookPage.currenAlpha, LeftBookPage.targetAlpha, 3);
- //Book.GetComponent<MegaBook>().bookalpha = LeftBookPage.currenAlpha;
- }
- void OnMouseDown()
- {
- BookManager.targetAlpha -= BookManager.fadeOfEveryPage;
- if (BookManager.targetAlpha < 0)
- BookManager.targetAlpha = 0;
- }
- }
- </span>
复制代码 =========================================================
itween检测到变化就会自动完成线性插值,并设置BookAlpha 来完成书的翻书效果。好了,就到这里吧。欢迎留言,我会很认真的回复。插件地址:http://pan.baidu.com/share/link?shareid=673083&uk=1761627728
|