construct2 ajax,Construct2/3
我們常在游戲中見到各種各樣的劇情對話,電子游戲從最早的RPG類對話框演變至今,已經(jīng)產(chǎn)生了無數(shù)種解決方案。但總的來說,常見的對話分為兩類:
最常見的galgame對話,可以看到較大的立繪圖表現(xiàn)人物的表情動態(tài)(甚至動畫),以及標記角色的名字和對話內(nèi)容。
或者也有一些游戲使用pop的懸浮對話窗口直接表現(xiàn),對話框與角色位置匹配,同時不干擾游戲環(huán)境的演出效果(例如可以一邊行走戰(zhàn)斗,pop框還依然出現(xiàn))
分析制作方案,有2個要素:
1 資源
2 配置
由于各個游戲的需求不同所以我們先從最低需求的資源和配置來講。
對話框資源,我們最低限度需要有一個框體和一個對話文本框。框體用來做文本的背景,文本框顯示對話內(nèi)容。然后再根據(jù)游戲需求的不同添加立繪用的圖片加載框,角色名文本框等。
如果是pop類型的對話,也可能需要添加箭頭資源(也可能需要區(qū)分對話和思考的箭頭和泡泡)
配置部分則比較復(fù)雜,首先我們需要先理解對話的最基本結(jié)構(gòu)。
這部分很好理解,對話就是一句一句的文本,說完一句進入下一句,所以我們可以將對話的配置設(shè)計為一連串的對話ID,比如ID 1000代表第一句話,這句完了就說ID為1001的那句:
(請暫時忽略文本里奇怪的標簽)
很好,這樣只要將這一串ID里的文本順序播放,一句完畢顯示下一句,最基礎(chǔ)的對話框配置就做好了。
接下來,我們需要添加一個標記,表示1014這句話是這段對話的最后一句,這樣程序當識別到這個標記就會在這段對話結(jié)束的時候關(guān)閉對話框,例如next標記0表示這是段落的最后一句話:
在添加了文本后,我們也需要區(qū)分對話是誰說的。所以還需要添加名字和立繪的配置列:
如圖role標識立繪用圖的名字
side標識立繪在對話框的左側(cè)還是右側(cè),在制作的時候會自動反轉(zhuǎn)立繪
name標識說話的角色名字,顯示在對話前面
關(guān)于文本打字效果:
文本打字效果是對話框的常用效果,可以有效的控制閱讀節(jié)奏,同時在單調(diào)的對話中有限的制造一些演出效果。
打字效果可以控制打字速度,并且可以在每個字出現(xiàn)的時候產(chǎn)生各種效果(參考逆轉(zhuǎn)裁判里的經(jīng)典用法)
基于打字效果產(chǎn)生的更多的細節(jié):
speed標記打字速度,0.5表示0.5秒打一個字
audio標記打字音效,即每個字出現(xiàn)時播放的音效
shake標記打字震屏效果,填寫的數(shù)值表示震屏強度
auto標記文本是否自動下一句話(可以參考逆轉(zhuǎn)裁判中犯人崩潰的橋段),一旦標記為auto則不需要按鍵也會自動進入下一句
size標記文本的字號
以下是最終效果(不過聽不到聲音啦)
更多擴展:flash 閃屏
bg 改變背景圖
bgm 改變背景音樂
posXY 改變立繪坐標使之偏移
effect 產(chǎn)生某個特定的特效
pop類對話看起來比固定對話框要簡單,不需要顯示名字,沒有立繪,受限于pop的尺寸文本也不可能做很多。但實際上,pop類對話比固定對話復(fù)雜很多:pop框的尺寸需要和文本量匹配
需要與說話的角色位置對應(yīng),甚至跟隨移動
pop對話的時候,可能需要與角色行為產(chǎn)生關(guān)系(例如更換動畫)
pop對話也許根本不會暫停游戲
POP框體的制作
在講述pop的制作方法前,需要普及一下pop的資源制作方法和在UI中的使用類型。
在UI控件中有一類名為9patch的控件。和普通的精靈圖片不同,9patch可以將一個圖片按井字分隔為9個格子,如下圖:
如果是普通的精靈圖片,在縮放的時候就會產(chǎn)生形變和模糊
而9patch控件可以將保證4個角不變的情況下自由拉伸并且不會模糊,實現(xiàn)固定倒角的隨意縮放的圓角矩形:
一旦基礎(chǔ)的pop對話框資源搞定以后,后面的事情就會簡單很多:
當對話框彈出后將pop框體+箭頭+文本創(chuàng)建在指定的角色上方(固定的點)
與上次講的固定框體一樣使用打字的方法講文本一個一個打出來
限制文本框的寬度,超過一定寬度(或有主動的文本回車)自動換行
將pop框的尺寸與文本框的尺寸匹配(當然四周需要留一些空間)
控制好框體的坐標(匹配對話框箭頭的位置,如果變大需要向上“長”)
對話框縮放的效果(目前GIF幀率低看不出來,其實框體的變化是更有“彈性”)
上圖是完成的效果,因為偷懶,所以pop框采用了和固定框不一樣的創(chuàng)建方式。每說一句話都會刪掉當前框體,下句話重新創(chuàng)建pop框體并從最小尺寸開始。
對話與角色匹配
由于pop對話的方案需要讓框體出現(xiàn)在指定的角色頭上,所以需要為對話配置對應(yīng)角色的字符(比如特定的名字),由程序邏輯找到那個角色并創(chuàng)建對話框(例如場景中有5個一樣的NPC,我們只想讓第二個NPC說話,這種時候就需要為他配置特殊的標記才能找到他)
角色是否受控?游戲是否暫停?
根據(jù)情況,可以將角色置為不受控狀態(tài),或干脆暫停游戲播放固定的對話或演繹動畫劇情。但也有非劇情對話的情況(比如敵人或NPC的隨機喊話),需要區(qū)分處理。
對話鏡頭
可以配置對話出現(xiàn)時鏡頭拉到說話角色的位置,用于跟蹤對話主體或跨屏演出效果
劇情段落
除了NPC或敵人不受控制的自言自語外(程序設(shè)置的某種規(guī)律的隨機說話),大部分的對話都是受劇情控制的綜合演出效果,這種時候往往只依靠對話表不太夠用。
實際上當游戲中對話文本過多的時候,可能還需要再高一個層級的配置,用來更方便的管理對話的開始和結(jié)束,對話的類型方案等等。如果對話叫做talk的話,這個配置可以稱之為story。
在story中最基本的配置除了ID外便是talk的開始ID和結(jié)束ID。還可以配置這段對話是固定對話框還是pop對話框,甚至產(chǎn)生某些混合方案,例如控制劇情之間的銜接關(guān)系。
演出效果的相關(guān)內(nèi)容:對話
動畫控制
鏡頭控制
行為控制(例如移動或跳到某處)
功能控制(例如某些開關(guān)自動開啟)
效果(特效,音樂音效)
其實大部分我還沒做,慢慢實現(xiàn)吧……orz
所以先這樣吧……
總結(jié)
以上是生活随笔為你收集整理的construct2 ajax,Construct2/3的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 幻兽天下修复版java_宠物天下四-幻兽
- 下一篇: java字符串的哈希码_获取Java中字