の勉強会
AGENDA
講師 Smith
影の支配者 Swanman
前説
今日の勉強会は
テキストチャット
今日のゴール
タグ
この勉強会ではページ毎に以下の 3つを明示します。
お題のプロトコルの知識
お題の知識
スクリプトの知識
改変の知識
サンプル改変のための知識
スクリプトの知識
準備
準備
サンプルプロジェクトを
サンプルプロジェクトをダウンロードする
github ページを開き、緑色の Code のプルダウンをクリック
https://github.com/dolow/ProtocolSample
サンプルプロジェクトをダウンロードする
「Download ZIP」をクリック、ダウンロードしたら任意のディレクトリに伸長する
Unity で開けるようにしておく
Unity Hub から Add > Add project from disk > zip に入っていたプロジェクトディレクトリ
Unity で開けるようにしておく
音声ファイルだけ再配布禁止の素材を使っています。
Discord 上で個別にお渡しします。
音声素材はコチラから DL したものです。
全部 OK、ただし使用結果への責任は負いかねます
サンプルプロジェクトについて
まずはサンプルを見てみよう
お題の知識
まずはサンプルを見てみよう
「2024/12/5 ゆるゲームジャム勉強会 / 攻撃ができるアイテム サンプル」
お題の知識
まずはサンプルを見てみよう
メッセージ受信側
メッセージ送信側
の2種類のアイテムがある。
まずは
メッセージ送信側
のアイテムを触って、それっぽい動きをしてみよう。
お題の知識
まずはサンプルを見てみよう
メッセージ受信側
メッセージ送信側
damage
ダメージを与えるときはプロトコルに則ってメッセージを送っている
お題の知識
まずはサンプルを見てみよう
お題の知識
ぶつかった時
詠唱が終わった時
振り下ろしている時
ぶつかったアイテムに
周囲のアイテムに
ぶつかったアイテムや
プレイヤーに
いつ
だれに
まずはサンプルを見てみよう
お題の知識
ダメージ値を
テキストで表示する
Y方向に力を加える
ダメージ
表現
プロトコル
プロトコルとは、アイテム間でメッセージを送るための取り決め
メッセージはスクリプトで送受信する
お題の知識
アイテム A
アイテム B
プロトコル
プロトコルは人間が決める
アイテムをつくる人が、プロトコルに応じた動きを自由に決める
お題の知識
damage プロトコル
・ダメージを与えたい
ときにつかう
・ダメージの数値を送る
これで行きましょう
拝承
プロトコル
プロトコルがないと、どんなメッセージを送ったらよいか、送られてきたメッセージをどう読めばいいか、がわからない
お題の知識
アイテム A
アイテム B
#@?%
なんか言ってるけど
よくわからん
プロトコル
お題の知識
ワールドクラフトは色々なクリエイターのクラフトアイテムを様々なユーザーが持ち寄る場所。
アイテム同士が意思疎通できるプロトコルがあると、空間内にルールができてコラボがはかどる!
?
?
?
?
?
?
このワールドの
プロトコル
・damage
・dance
・move
まとめ
お題の知識
サンプルプロジェクトを見てみよう
改変の知識
サンプルの基本構造
改変の知識
prefab を置いてあるだけ!
全て独立したアイテムで、クラフトアイテムとしてもアップロードできます。
※クラフトアイテムの場合、パーティクルやアニメーションの動作は行いません
サンプルの基本構造
改変の知識
剣っぽいやつ
<- スクリプトに必要なものがアタッチされたルート
<- 振るときの効果音用 AudioSource
<- 当たったときの効果音用 AudioSource
<- GrabbableItem の Grip 用 Transform
<- 床から抜けないようにする Collider
<- $.getOverlaps() 用の Collider (trigger on)
<- 見た目の部分
サンプルの基本構造
改変の知識
剣っぽいやつ
Audio Source の AudioClip を差し替える
効果音のカスタマイズ
ModelRoot 配下を好きなモデルに差し替える
Collider と TriggerShape を見た目通りに調整する
Grip (掴む位置) を調整する
見た目のカスタマイズ
サンプルの基本構造
改変の知識
杖っぽいやつ
<- スクリプトに必要なものがアタッチされたルート
<- 詠唱中の効果音用 AudioSource
<- 発動時の効果音用 AudioSource
<- GrabbableItem の Grip 用 Transform
<- 演出用 ParticleSystem
<- 床から抜けないようにする Collider
<- $.getOverlaps() 用の Collider (trigger on)
サンプルの基本構造
改変の知識
杖っぽいやつ
パーティクルのカスタマイズ
好きなパーティクルを炊くようにする
サンプルの基本構造
改変の知識
ボールっぽいやつ
作ってみたけどあんまり prefab の改変の余地はないかも・・・
各サンプルの基本構造
中身の知識
復習
まとめ
スクリプト解説
スクリプトの知識
基本構造おさらい
スクリプトの知識
プロトコルとは、アイテム間でメッセージを送るための取り決め
今回はダメージを与えた時に damage プロトコルでメッセージを送る
アイテム A
アイテム B
杖っぽいやつの例
処理の流れ
ClusterScript: Resources/ClusterScripts/sender_magick.js
PlayerScript: Resources/ClusterScripts/sender_magick_pcx.js
掴む
メッセージ送信
パーティクル・SE 再生
パーティクル停止
使う
パーティクル・SE制御
メッセージ受信
メッセージ送信
手放す
スクリプトの知識
掴む
メッセージ送信
パーティクル・SE 再生
パーティクル停止
使う
パーティクル・SE制御
メッセージ受信
メッセージ送信
手放す
アニメーション用の PlayerScript をつけている
スクリプトの知識
掴む・手放す処理を渡す API
isGrab が真なら掴む
isGrab が偽なら手放す
パーティクル停止処理
詠唱中に重複して詠唱開始するのを防ぐ
PlayerScript にメッセージ送信
掴む
メッセージ送信
パーティクル・SE 再生
パーティクル停止
使う
パーティクル・SE制御
メッセージ受信
メッセージ送信
手放す
スクリプトの知識
パーティクル・SE制御
使う処理を渡す API
掴む
パーティクル・SE 再生
パーティクル停止
使う
パーティクル・SE制御
メッセージ受信
メッセージ送信
手放す
スクリプトの知識
メッセージ受信
アニメーション開始
姿勢変更
メッセージ送信
姿勢変更
アニメーション終了
PlayerScript
メッセージ送信
スクリプトの知識
アニメーション開始
姿勢変更
メッセージ送信
姿勢変更
アニメーション終了
PlayerScript
改変ポイント
アニメーションは色々いじれる
メッセージ受信
掴む
メッセージ送信
パーティクル・SE 再生
パーティクル停止
使う
パーティクル・SE制御
メッセージ受信
メッセージ送信
手放す
スクリプトの知識
メッセージ受信時の処理を渡す API
パーティクル・SE再生処理
メッセージ送信対象の抽出
掴む
メッセージ送信
パーティクル・SE 再生
パーティクル停止
使う
パーティクル・SE制御
メッセージ受信
手放す
スクリプトの知識
定期的に行う処理を渡す API
メッセージ送信
メッセージ送信処理
メッセージは一定間隔で送信できる回数が限られている。
このサンプルでは 0.1秒ごとに送っている。
掴む
メッセージ送信
パーティクル・SE 再生
パーティクル停止
使う
パーティクル・SE制御
メッセージ受信
手放す
スクリプトの知識
メッセージ送信
さっきの onUpdate のつづき
パーティクル停止処理
SE と違ってパーティクルは自動的に止まってくれない。
スクリプトで再生秒数を管理して、一定時間以上再生したら止めている。
スクリプトの知識
すぐにできる改変ポイント(19~22行目)
スクリプトの知識
基本的な構文の解説は Resources/ClusterScripts/receiver_display.js の
下部に記載しているので、そちらもあわせて見てみてください。
スクリプト解説
まとめ
スクリプトの知識
スクリプト解説
復習
ダメージが発生するアニメーション位置は、アニメーション開始が 0、終了を 1 としたときのダメージ発生タイミングです。
0
1
0.5
0.55 はこのへん
スクリプトの知識
まとめ
まとめ
プロトコルは
サンプルは
つくりこむ余地は
無限大!
アンケートのご協力
お願いいたします
Q & A
Q & A