1234 第1页 | 共4 页下一页
返回列表 发新帖
查看: 17735|回复: 36
打印 上一主题 下一主题

[教程] 做自己的一个3D翻书特效

[复制链接]

12

主题

2

听众

231

积分

设计实习生

Rank: 2

纳金币
208
精华
0

最佳新人

跳转到指定楼层
楼主
发表于 2013-5-31 15:29:22 |只看该作者 |倒序浏览
pstatus"> 本帖最后由 艾西格亚 于 2013-10-15 07:34 编辑

这次项目里面需要实现一个3D的翻书效果,找资料,找插件:找到了两个比较好的插件,一个是:Mega-Fiers (随后分享)这个插件是用来做Mesh变形的,超级不错的插件。但是没有时间研究,只是拿来用了一个其中的一小部分功能,那就是用Book等几个脚本。另外一个叫 3D Flipping Book  专门做书的特效的。但是看起来比较复杂——用XML加载方式等等。没具体研究,这里就不做过多讨论,应该也挺帅的。

下面我就简单介绍一下 这本书用Mega-Fiers的怎么做的。

具体效果:

1.png

1. 导入插件

基本和其他插件一样,拖拽就可以了。导入后增加了两个地方的菜单栏:

一个是GameObject里面的另一个是组件里面的一些。不过我没有深入研究,暂且用一用Book相关的吧。

2.png    3.png

2. PageMesh

PageMesh是组成书的主要GameObject,我们可以通过创建一个是体会一下: GameObject—>CreateOther—>MegaShape—>ageMesh

我们就创建了一个PageMesh 的GameObject


4.png
我们可以查看一下PageMesh的组件属性:

5.png

主要设置的属性就是书的前页和后页,主要使用材质来控制。 以及 长、宽、高等等 我们这里不做设置。我们随笔给两个材质。

PageMesh是书的主要部件,我们给单个的PageMesh添加组件:

Component—>Modifiers—>Modifier Object 以及 Component—>Modifiers—>age Flip

这两个组件。

然后,在PageFlip 组件里面有一个属性是:Turn 可以调节大小,我们用鼠标调节的时候发现 这一页可以滚动了。这里就是页面翻动效果的实现了。

接下来我们做一本书!哦耶!

0.新建一个Book的GameObject的物体做总的父物体。

1. 创建封皮和尾页。

新建空的GameObject 并命名 FrontPage和BackPage

然后新建两个PageMesh 并稍微调剂一个属性,如图:(前后页一样)


frontPage.png

然后,拖拽到相对应的刚才新建的GameObject。

2.建立三个状态的页面:这三个页面分别用来表示翻过去的页面。正在翻的页面。以及将要翻起来的页面,三个状态。

这三个页面就是我们刚才建立的单个页面一样,并是这三个页面也作为Book的子物体。属性设置成为如图所示: book1.png


这个时候,整本书的样式结构已经出来了:如图所示:
book.png

3.添加Book脚本

选中 Book (父物体) 选择Script—>MegaBook 添加到了Book上面,属性面板如图所示,


shuxing.png

我们所要呈现的东西都在这个里面添加:

前页 后页 Page1 Page2 Page3 以及所有要显示的页面的Picture等等 都要在这个属性面板上设置。我们按着这个设置好。

这时候,我们滚动属性值BookAlpha 发现书可以滚动了! 有些小毛病可以调节一下其他的值。

4.程序控制:我使用的是用点击控制BookAlpha的方式。

创建两个Colider 放在书的前面


colider.png
在总的父物体上添加脚本
=======桑心,还是没有代码的输入框!!================================
  1. <span style="background-color: white;">using UnityEngine;
  2. using System.Collections;

  3. public class BookManager : MonoBehaviour
  4. {


  5.     public GameObject Book;
  6.     // Use this for initialization
  7.     bool showBook = false;
  8.     int pageCount;
  9.     public static float fadeOfEveryPage;
  10.     void Start()
  11.     {
  12.         pageCount = (Book.GetComponent<MegaBook>().pages.Count) / 2 + 2;
  13.         fadeOfEveryPage = 100.0f / pageCount;
  14.     }
  15.     public static float targetAlpha = 0;
  16.     public static float currenAlpha = 0;
  17.     void Update()
  18.     {
  19.         currenAlpha = iTween.FloatUpdate(currenAlpha, targetAlpha, 3);
  20.         Book.GetComponent<MegaBook>().bookalpha = currenAlpha;
  21.     }
  22. }</span>
复制代码
=========================================================


我们使用了Itween里面的 FloatUpdate 方式,是值的变化 线型插值完成。 时间为3秒在左右的碰撞检测的里面设置=========================================================
  1. <span style="background-color: white;">using UnityEngine;
  2. using System.Collections;

  3. public class RightBookPage : MonoBehaviour
  4. {

  5.     void Update()
  6.     {
  7.         //Debug.Log("curr:" + LeftBookPage.currenAlpha + "aaaa" + "target:" + LeftBookPage.targetAlpha);
  8.         //LeftBookPage.currenAlpha = iTween.FloatUpdate(LeftBookPage.currenAlpha, LeftBookPage.targetAlpha, 3);
  9.         //Book.GetComponent<MegaBook>().bookalpha = LeftBookPage.currenAlpha;
  10.     }

  11.     void OnMouseDown()
  12.     {
  13.         BookManager.targetAlpha -= BookManager.fadeOfEveryPage;
  14.         if (BookManager.targetAlpha < 0)
  15.             BookManager.targetAlpha = 0;
  16.     }
  17. }
  18. </span>
复制代码
=========================================================
itween检测到变化就会自动完成线性插值,并设置BookAlpha 来完成书的翻书效果。好了,就到这里吧。欢迎留言,我会很认真的回复。插件地址:http://pan.baidu.com/share/link?shareid=673083&uk=1761627728

BookContral.zip

1.2 KB, 下载次数: 973

控制翻书脚本

分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏1 支持支持0 反对反对0
回复

使用道具 举报

2

主题

0

听众

84

积分

设计实习生

Rank: 2

纳金币
76
精华
1
沙发
发表于 2013-5-31 15:34:29 |只看该作者
看到看不到效果,谁买你的东西呀?
回复

使用道具 举报

0

主题

5

听众

701

积分

初级设计师

Rank: 3Rank: 3

纳金币
45
精华
0

最佳新人

板凳
发表于 2013-5-31 15:45:23 |只看该作者
支持发帖,感谢分享~
回复

使用道具 举报

12

主题

2

听众

231

积分

设计实习生

Rank: 2

纳金币
208
精华
0

最佳新人

地板
发表于 2013-5-31 16:09:07 |只看该作者
家居设计 发表于 2013-5-31 15:34
看到看不到效果,谁买你的东西呀?

必须免费啊!哈哈
回复

使用道具 举报

2206

主题

2

听众

3万

积分

资深设计师

Rank: 7Rank: 7Rank: 7

纳金币
32449
精华
23

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

5#
发表于 2013-5-31 16:18:13 |只看该作者
感谢分享~
回复

使用道具 举报

0

主题

2

听众

6150

积分

高级设计师

Rank: 6Rank: 6

纳金币
62
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

6#
发表于 2013-5-31 22:36:51 |只看该作者
支持发帖,感谢分享
回复

使用道具 举报

9903

主题

126

听众

7万

积分

首席设计师

Rank: 8Rank: 8

纳金币
53456
精华
316

最佳新人 热心会员 灌水之王 活跃会员 突出贡献 荣誉管理 论坛元老

7#
发表于 2013-5-31 22:42:21 |只看该作者
支持一个,看起来很不错的效果
回复

使用道具 举报

0

主题

1

听众

8

积分

设计初学者

Rank: 1

纳金币
5
精华
0

活跃会员 灌水之王

8#
发表于 2013-6-1 00:58:45 |只看该作者
好强大。
回复

使用道具 举报

0

主题

1

听众

166

积分

设计实习生

Rank: 2

纳金币
2
精华
0

最佳新人

9#
发表于 2013-6-3 14:58:47 |只看该作者
学习~~~~~~~~~
回复

使用道具 举报

0

主题

1

听众

50

积分

设计初学者

Rank: 1

纳金币
4
精华
0
10#
发表于 2013-8-13 14:00:05 |只看该作者
本帖最后由 leober 于 2013-8-13 14:02 编辑

“Shader wants texture coordinates, but the mesh  Instance Instance Instance doesn't have them
UnityEditor.DockArea:OnGUI()”
报了一个错!!!楼主能不能帮我看一下?

QQ图片20130813140050.jpg (44.59 KB, 下载次数: 447)

mesh组件如图所示

mesh组件如图所示

QQ图片20130813140218.jpg (43.47 KB, 下载次数: 436)

如图

如图

回复

使用道具 举报

1234 第1页 | 共4 页下一页
返回列表 发新帖
您需要登录后才可以回帖 登录 | 立即注册

关闭

站长推荐上一条 /1 下一条

手机版|纳金网 ( 闽ICP备08008928号

GMT+8, 2024-4-19 20:11 , Processed in 0.248864 second(s), 40 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部