Renpy教學【第十篇 #10】 一起寫視覺小說吧 【上】
最近開始了在 Youtube 上上傳教學影片歡迎訂閱我的頻道~
廢 話 不 多 說 就 直 接 開 始 囉
(( 裡 面 的 功 能 詳 細 介 紹 可 以參 考 這 篇
1. Step ( 事 前 準 備 )
如 果 你 還沒 有 下 載 Renpy 你 可 以 點 這 裡 下 載 最 新 的 Renpy
有 了 Renpy 之 後 你 還 需 要 一 個 編 輯 器 來 編 輯 代 碼 們
如 果 你 還 沒 有 Atom 可 以 點 這 裡 下 載 他
之 後 呢 就 是 創 建 一 個 新 的 專 案
如 果 要 創 建 中 文 的 專 案 的話 你 要 先 把 renp 的 語 言 改 成 中 文
- Preference - Language - 找 到 Traditional Chinese 或 是 Simplified Chinese ( 繁 體 或 簡 體 字 )
點 下 去 之 後 Atom 就 會 自 動 打 開 拉 ( 如 果 你 下 載 了 Atom 了 的 話 , 你 也 可 以 用 其 他 編 輯 器 )
點 進 來 後 你 就 會 看 到 這 個 畫 面 ( 我 換 了 主 題 所 以 是 不 同 的 顏 色 , 一 般 來 說 是 黑 色的 ( ( 畫 面 )
點 進 來 後 你 就 會 看 到 這 個 畫 面 ( 我 換 了 主 題 所 以 是 不 同 的 顏 色 , 一 般 來 說 是 黑 色的 ( ( 畫 面 )
2. Step ( 定 義 角 色 們 )
所 以 呢 第 2 步 就 是 把 劇 情 裡 的 角 色 放 進 script 裡
Character 後 面 是 角 色 的 名 字 - 只 要 打 Nin 就 會 自 動 出 現 Ning Ning 拉
color 後 面 的 是 顏 色 代 碼
在 這 個 專 案 裡 只 會 有 2 個 角 色 登 場
- define m = Character('Mika', color="#000000")
- define l = Character('Lia', color="#9e3bad")
定 義 完 角 色 後 就 給 他 們 一 張 角 色 圖 吧
先 把 要 使 用 的 立 繪 ( 圖 片 ) 拉 進 專 案 裡 的 某 個 文 件 夾 裡 ( 我 的 話 會 放 在 images/character 裡 )
圖 片 都 放 進 來 後 就 可 以 在 腳 本 裡 ( script.rpy ) 定 義 圖 片 們 了
圖 片 都 放 進 來 後 就 可 以 在 腳 本 裡 ( script.rpy ) 定 義 圖 片 們 了
像 這 樣:
- image lia = "images/character/lia.png"
- image mika = "images/character/mika.png"
之 後 只 要 打 出 lia 或 mika 就 會 顯 示 你 定 義 好 的 圖 片 拉
像 這 樣 :
我 用 了 topleft 因 為 我 的 圖 片 太 大 了 所 以 不 用 top ... 的 話 臉 就 沒 辦 法 入 鏡 拉 (( 其 實 是 可 以 調 整 圖 片 的 大 小 的 只 是 我 懶 hehe
3. Step (背景)
我 的 話 會 給 背 景 自 己 一 個 資 料 夾 ( 在 images 裡 )
這 個 專 案 目 前 我 只 放 了 一 張 背 景 圖
所 以 我 的 代 碼 長 這 樣 : image park = "images/bg/park.jpg"
現 在 renpy 可 以 不 用 定 義 就 可 以 使 用 圖 片 了 但 我 還 是 會 先 定 義
(( 之 後 如 果 要 大 範 圍 / 大 面 積 (?) 的 更 換 圖 片 就 會 比 較 方 便 了
下 面 是 沒 有 事 先 定 義 圖 片 直 接 使 用 的 代 碼 :
顯 示 出 來 的 畫 面 :所 以 如 果 你 的 專 案 不 是 很 大 / 圖 片 比 較 少 或 是 你 很 確 定 不 會 再 對 圖 片 做 更 改 的 話 其 實 也 沒 有 一 定 要 事 先 定 義 圖 片 的 必 要
4. Step ( 對 話 )
所 以 呢 下 面 是 我 希 望 呈 現 的 對 話 - 影 片 點 這 裡
要 怎 麼 做 出 這 樣 的 對 話 -
4-1 讓 玩 家 輸 入 自 己 想 要 的 名 字
首 先 一 開 始 需 要 一 個 畫 面 / label 來 詢 問 玩 家 , 他 們 希 望 使 用 的 名 字
範 例 :
label name:
$ pn = renpy.input("請 輸 入 你 的 名 字 ~ ", length=10)
$ player_name = pn.strip()
if pn =="":
" 請 給 角 色 一 個 棒 棒 的 名 字 "
jump name
label XX: - label 後 面 接 的 文 字 可 以 隨 意 替 換 但 注 意 要 跟 後 面 jump XX 是 一 樣 的
$ XX = renpy.input("XXX", length=XX)
$ XX - $ 後 面 的 單 字 可 以 隨 意 替 更 改 , 後 面 的 字 是 用 來 當 作 角 色 代 號 的 ( 如 果 你 寫 main 之 後 只 要 在 句 子 前 打 出 main 就 會 自 動 換 成 玩 家 輸 入 的 名 字 了
" 請 輸 入 你 的 名 字 ~ " - 可 以 更 改 在 "" 裡 的 文 字 , 如 果 你 寫 " 請 在 這 裡 輸 入 你 的 名 字 吧 " 那 畫 面 就 會 變 成 這 樣
length=10) - 你 可 以 更 換 後 面 的 數 字 或 是 直 接 刪 除 這 一 行 , 這 是 用 來 告 訴 renpy 玩 家 最 多 可 以 輸 入 幾 個 字 的 , 如 果 設 定 為 20 那 玩 家 就 不 能 輸 入 20 以 上 的 文 字 / 字 母 作 為 名 字 / 如 果 刪 除 這 一 行 那 玩 家 可 以 輸 入 的 文 字 / 字 母 就 沒 有 上 限
if pn =="": - 如 果 玩 家 甚 麼 都 不 打 直 接 繼 續 / 按 下 Enter
" 請 給 角 色 一 個 棒 棒 的 名 字 " - 那 就 會 顯 示 這 一 段 字 jump name 是 讓 畫 面 跳 回 label name 的 所 以 jump 後 面 的 文 字 必 須 和 一 開 始 label 的 文 字 一 樣
這 樣 輸 入 名 字 的 部 分 就 完 成 拉
4-2 設 定 好 感 系 統
$數 值 名 稱 = 0
$- 這 個 符 號 後 面 的 字 可 以 隨 便 換 , 你 可 以 叫 他 Affection ( 好 感 ) , Intelligent ( 智 力 ) ... 之 類 的
注 意 ! $ 和 數 值 的 名 字 之 間 是 沒 有 空 格 的 (( 我 因 為 空 格 的 關 係 一 直 出 現 Error 弄 了 很 久 才 發 現 QQ
範 例:
$lia_aff = 0
$mika_aff = 0
上 面 這 2 行 是 我 在 這 個 專 案 裡 使 用 的 代 碼
所 以 呢 從 Step 4-1 到 4-2 你 應 該 會 有 看 起 來 像 這 樣 的 代 碼 ( # 後 面 的 字 是 對 那 行 代 碼 的 解 釋 ) :
#總 共 會 登 場 的 角 色
define m = Character('Mika', color="#000000") # 白 髮 的 角 色
define l = Character('Lia', color="#9e3bad") # 黑 髮 的 角 色
define pn = Character("[player_name]", color="#88b2c2) # 主 角
label start:
$lia_aff = 0 # Lia 對 玩 家 的 好 感
$mika_aff = 0 # Mika 對 玩 家 的 好 感
scene park # 背 景 圖 片 ( 公 園 )
label name: # 新 的 一 個 叫 做 name 的 label
$ pn = renpy.input(" 請 在 這 裡 輸 入 你 的 名 字 吧", length=10)
$ player_name = pn.strip()
if pn =="":
"請 給 角 色 一 個 棒 棒 的 名 字"
jump name
show lia at topleft # 讓 lia 登 場 ((站 在 左 邊
show mika at topright # 讓 mika 登 場 (( 站 在 右 邊
m "你好, [player_name]!" #打招呼並讓mika說出玩家的名字
l "你好~ " #讓lia打招呼
m "歡迎你的到來"
m "要繼續往前的話請你回答一些問題"
m "根據你的回答會決定你之後跟誰一起走~"
pn "好的" #玩家的回覆
4-3 設 定 選 項 ( 會 影 響 到 後 續 劇 情 的 選 項 )
根 據 玩 家 的 選 擇 會 影 響 到 後 續 的 劇 情
( 在 這 個 專 案 會 影 響 到 之 後 玩 家 要 跟 哪 個 角 色 一 起 走 )
下 面 是 我 在 這 個 專 案 裡 使 用 的 代 碼
m "問題1 - 你比較喜歡蘋果還是香蕉呢?" #mika提出的第1個問題
menu: #讓renpy知道下面的代碼都屬於這個選項
"蘋果": #玩家看到的選項1
$ lia_aff += 1 #這個選項造成的影響 ((lia的好感加1
jump q2 #如果玩家選了蘋果那就會跳到q2 (問題2
"香蕉":#玩家看到的選項2
$ mika_aff += 1 #這個選項造成的影響 ((mika的好感加1
jump q2 #如果玩家選了香蕉那就也會跳到q2 (問題2 - 你也可以選擇讓玩家跳到其他label
----------- 分 隔 線 -----------
更多關於選項的東東你可以點這裡
所以呢我在這個專案全部的選項的代碼看起來就像這樣:
m "問題1 - 你比較喜歡蘋果還是香蕉呢?"
menu:
"蘋果":
$ lia_aff += 1
jump q2
"香蕉":
$ mika_aff += 1
jump q2
label q2:
m "問題2 - 你比較喜歡黑色還是白色呢?"
menu:
"黑色":
$ lia_aff += 1
jump q3
"白色":
$ mika_aff += 1
jump q3
label q3:
m "問題3 - 你比較喜歡電影還是連續劇?"
menu:
"電影":
$ lia_aff += 1
jump final
"連續劇":
$ mika_aff += 1
jump final
---------------------------------------分隔線--------------------------------------------------------------
renpy 會 記 住 玩 家 的 選 項 並 記 得 選 項 造 成 的 影 響 , 當 玩 家 選 擇 了 最 後 的 問 題 ( 問 題 3 ) 的 選 項 後 就 會 跳 到 叫 做 final 的 label
label final:
if lia_aff >= mika_aff: #如果lia的好感比mika的好感大
jump lia #那就跳到一個叫做lia的label
else: #如果上面的if句子不成立 ((lia的好感比mika小
jump mika #那就跳到一個叫做mika的label
最 後 就 是 建 立 1 個 叫 mika1 個 叫 lia 的 label 了
下 面 是 我 在 這 個 專 案 裡 使 用 的 代 碼 / 對 話 :
label lia:
hide mika
l "你好 "
l "今天會由我帶你參觀這裡"
return
label mika:
hide lia
m "你好~"
m "今天的旅程就由我來陪你吧 "
return
到 這 裡 就 完 成 拉
-根 據 這 個 教 學 最 後 會 呈 現 出 來 的 畫 面 - 影 片 點 這 裡
----------------- 分 隔 線 -----------------
◆ 喜歡這篇文章的話 — 留言或是為我拍手, 我都會很開心的!
Step 4 的對話好像被剪掉了
要怎麼做出這樣的對話 - 後面接的4-1,4-2等就是Step4的後續囉
感謝!
感謝你的Ren'Py教學!