unity 製作書本 翻頁效果

2022-05-10 19:58:11 字數 2410 閱讀 1204

unity 製作書籍翻頁效果

unity c# 翻書效果 2d 真實翻頁 不使用外掛程式 自製

實現思路

將書本分為兩邊,一邊乙個翻頁實現;

下圖為書本的右面,以oa為分界線,△oab是下一面的如上圖的左下角,△oac是下一面的如上圖的右下角;

利用unity的mask可以實現,也就是,假設這一頁是1(左邊那一頁是0),需要有乙個物件作為底面顯示3,乙個物件被mask遮住顯示2的左下角在△oab上,乙個物件被mask遮住顯示1的左上部分在◇oade上;

oab部分的mask可以如下圖理解:◇oafg是mask,◇obcd是2,翻頁時,◇oafg逆時針轉動,◇obcd作為◇oafg的子物件,相同的方向旋轉相同角度;

其他部分以及左邊頁面實現的原理都同上,還有就是翻書的中心點是以兩頁中間底部為旋轉原點;

實現步驟

1.新建乙個2d專案並在hierarchy面板新建乙個canvas,並在其下建立如下物件,從上到下含義可以理解為左邊底頁面、左邊逐漸消失頁面(父物件為mask子物件為)、左邊逐漸出現頁面、右邊底頁面、右邊逐漸消失頁面(父物件為mask子物件為)、右邊逐漸出現頁面,其中的leftpageshadow和rightpageshadow是翻書的陰影,如下圖2的灰色線,會跟著◇obcd一起旋轉,但是是反方向才能和書摺痕的邊緣契合,摺痕使用下圖3有漸變的即可;

5.rightnextcover、rightnextpage和rightpageshadow基於同樣的原因和效果出現的位置做如下設定,可在設定過程中體會理解,注意pivot和rotation,rightpageshadow可以減少顏色透明度來減淡陰影;

6.建立乙個指令碼並掛載在maincanvas上,定義以下變數,上面部分的image表示對應名字的image屬性,sprite表示所有書頁,turningtime表示翻頁時間,isturing表示當前是否正在翻頁;

7.右邊翻向左邊的**如下,setsiblingindex是設定物體在hierarchy面板的位置,用來排序,因為排在下面的物體會顯示在排在上面的物體的前面,setsiblingindex具體說明可參看unity文件。offsetangle根據旋轉時間來調節旋轉的幅度。然後就是各種角度的疊加和旋轉抵消。resetbookimage函式和resetpagesattribute函式,後面細說。此處使用setsiblingindex也可通過,建立兩個空物體然後附加乙個canvas元件,把左右兩邊的物體分別作為子物體,然後通過調節sorting order來顯示哪一頁在前面;

8.左邊翻向右邊的**如下,同理不再贅述

9.resetpagesattribute的**如下,重置所有image的座標和角度;

10.建立如下變數,含義分別為當前頁數,最大頁數,還有左邊翻頁協程和右邊翻頁協程。resetbookimage函式**如下,用於重新設定各個image對應的,此處比較需要抽象和想象,想通就很容易理解;

11.在start裡初始化變數和重設,然後再建立兩個函式用來啟動翻頁的功能;

12.在hierarchy面板建立乙個空物體並掛載新指令碼inputcontrol用來控制點選,**如下。此處使用graphic raycaster(ui射線)來檢測點選的位置,還需要建立兩個空image並調至要響應翻頁的地方,此處為頁面左右兩邊並且寬度為總寬度的四分之一。射線檢測通過比對name來進入不同翻頁;

至此,使用unity原生元件製作書本翻頁效果的功能就完成了,以下為效果

jquery無重新整理翻頁,無翻頁效果

前台 名稱 nc2 httputility.urlencode 值 class lk mw 更多 一般處理程式 using system using system.collections using system.data using system.web using system.web.serv...

切割翻頁效果(一)

前段時間根據朋友的乙個提議做了個翻頁動畫。效果跟水果忍者切割相似。如圖 效果過程大致如下 1 根據手勢痕跡將當前分割為兩部分 2 將分割後的拉開一段距離,並適度放大,以模擬向螢幕外彈起效果,同時露出底層 3 錯位移動分割後的 首先遇到的問題是如何對進行分割。我選擇採用canvas.clippath來...

vue element 翻頁載入 效果

自己放乙個 在上面 這裡做乙個假分頁,就是資料一次性拿到手,然後去處理資料進行分頁,做兩個陣列,乙個是渲染 的陣列 乙個是獲取到的資料的陣列 然後我們這裡面直接引用一下element裡面的分頁布局,我們選那個功能比較全面的,有條數選擇。current change handlecurrentchan...