Nanashi-soft

Nanashi-softの活動状況とか雑談です。 Unity3Dでゲーム作っています。

今年PSでプレイしたゲーム
トロフィー取得日付が2017年になっているヤツを見て作ったので抜けがあるかも知れません('-'*)
PS4でどんどんギャルゲが出始めているので,来年は多くなると思います

○新作
 1/12 ニューダンガンロンパV3 みんなのコロシアイ新学期[PS4]
 1/26 双星の陰陽師[PSV]
 1/26 NEW GAME!![PS4]
 2/ 9 四女神オンライン CYBER DIMENSION NEPTUNE[PS4]
 2/16 萌え萌え2次大戦(略)3[PS4]
 2/17 ヨイヤミドリーマー[PS4]
 2/23 NieR Automata(ニーア オートマタ)[PS4]
 2/ 9 仁王[PS4]
 3/16 アクセル・ワールド VS ソードアート・オンライン 千年の黄昏[PS4]
 3/16 閃乱カグラ PEACH BEACH SPLASH[PS4]
 3/16 この世の果てで恋を唄う少女YU-NO[PS4]
 3/23 Rewrite[PS4]
 3/30 ブルーリフレクション 幻に舞う少女の剣[PS4]
 3/30 CHAOS;CHILD らぶchuchu!![PS4]
 3/30 無双☆スターズ[PS4]
 3/30 Re:ゼロから始める異世界生活 DEATH OR KISS[PS4]
 4/20 ダンジョントラベラーズ2-2 闇堕ちの乙女とはじまりの書[PSV]
 4/27 Song of Memories(ソング オブ メモリーズ)[PS4]
 4/27 追放選挙[PS4]
 5/25 イースVIII -Lacrimosa of DANA-[PS4]
 6/ 1 死印[PSV]
 6/ 7 ねぷねぷ☆コネクト カオスチャンプル[PSV]
 7/27 グリザイアの果実 -SIDE EPISODE-[PSV]
 7/29 ドラゴンクエストXI[PS4]
 7/29 ドラゴンクエストI[PS4]
 8/10 ドラゴンクエストII 悪霊の神々[PS4]
 8/16 Undertale[PS4]
 8/24 新次元ゲイム ネプテューヌVIIR[PS4]
 8/24 The Lost Child(ザ・ロストチャイルド)[PS4]
 8/24 WHITEDAY 学校という名の迷宮[PS4]
 8/24 ドラゴンクエストIII そして伝説へ…[PS4]
 8/31 よるのないくに2 ~新月の花嫁~[PS4]
 9/ 7 祝姫 -祀-[PS4]
 9/14 星織ユメミライ[PS4]
 9/14 アンチャーテッド 古代神の秘宝[PS4]
 9/19 FINAL FANTASY IX[PS4]
 9/28 オカルティック・ナイン[PS4]
 9/28 ルフランの地下迷宮と魔女ノ旅団[PS4]
10/12 デート・ア・ライブ 凜緒リンカーネイションHD[PS4]
10/12 Middle-earth: Shadow of War[PS4](シャドウ・オブ・ウォー)
10/19 巨影都市[PS4]
10/19 グランツーリスモ SPORT[PS4]
10/20 Tear -終わりとはじまりの雫-[PS4]
10/26 月に寄りそう乙女の作法[PS4](つり乙)
10/26 甘えかたは彼女なりに[PS4](あまなり)
10/26 やはりゲームでも俺の青春ラブコメはまちがっている。&続 おまとめセット[PS4]
10/27 The Town of Light[PS4]
11/ 1 .hack//G.U. Last Recode[PS4]
11/10 二ノ国II レヴァナントキングダム[PS4]
11/22 となりに彼女のいる幸せ ~Two Farce~[PS4]
11/30 リトルウィッチアカデミア 時の魔法と七不思議[PS4]
12/ 7 地球防衛軍5[PS4]
12/21 アイドルマスター ステラステージ[PS4]
12/21 リディー&スールのアトリエ[PS4]
12/21 グリザイア ファントムトリガー 01&02[PSV]
12/21 千の刃濤、桃花染の皇姫[PS4]
※後でセールで買ったりもしたので,プレイ順ではありません

○発売日がわからなかったり,旧作のPSプラスフリーになったヤツとか,安売りしてたから買ったヤツとか('-'*)
閃乱カグラ ESTIVAL VERSUS 少女達の選択[PS4]
ネットハイ[PSV]
リプキス[PS4]
執事が姫を選ぶとき[PS4]
恋愛リベンジ[PS4]
龍が如く 極[PS4]
戦国BASARA4 皇[PS4]
Dead Rising[PS4]
勇者死す。[PSV]
カデンツァ フェルマータ アコルト:フォルテシモ[PSV]
biohazard HD REMASTER[PS4]
魔女と百騎兵 Revival[PS4]
GRAVITY DAZE[PS4]
アスディバインハーツ[PS4]
この大空に、翼をひろげて CRUISE SIGN[PSV]
もっと姉、ちゃんとしようよっ!+PLUS[PSV]
EVE burst error R[PSV]
DYING: Reborn[PS4]
Until Dawn -惨劇の山荘-[PS4]
ネットハイ[PSV]
幕末Rock 超魂[PSV]
キスベル[PSV]
刺青の国[PSV]
Bloodborne[PS4](ブラッドボーン)

○昔買ったゲームで年越してプレイ中のもの(抜粋)
不思議の幻想郷TOD -RELOADED-[PS4]
ディアブロⅢ[PS4]
ファイナルファンタジー15[PS4]
ひぐらしのなく頃に粋[PS3](やっと終わった)
魔女こいにっき[PSV]
シェルノサージュ~失われた星へ捧ぐ詩~[PSV](やっと終わった)
Fate/EXTELLA[PS4]
ご注文はうさぎですか?? Wonderful party![PSV]

※カッコ内は私がプレイした機種です

●もっと広いマップを作りたい
デフォルト状態では500m四方です
せっかく生成しながら移動できる仕組みなのですから,広大なマップにしたい

ベースがテレインなので,同じ場所で調整できるのでは?
シーン上の Forestオブジェクトの Inspectorに Terrainがある
そこの設定アイコン(ギアの形)をクリック
Resolutionにサイズ設定があります
【注意】マップサイズを変更すると,これまで行ったものが全て消去されてしまいます

設定内容の詳細は Unityマニュアルにあります
https://docs.unity3d.com/ja/540/Manual/terrain-OtherSettings.html

サイズを変更すると,配置していたオブジェクトもリセットされますので,再度生成し直します
Rebuild all meshesボタンをクリック

あと,テレインオブジェクトを回転させたり,スケールを変えたりはしないでください(それをするとシェーダーが誤動作するかも知れないとマニュアルに書いてある)


〇Could not find methodエラーが多発した場合
↓こういうエラーが無数に表示された
Could not find method 
UnityEngine.Debug:LogError(Object)
VEAGames.LAM.Editor.DecoratorEditor:CallInspectorMethod(String) (at Assets/Plugins/LandscapeAutoMaterial/Editor/DecoratorEditor.cs:131)
VEAGames.LAM.Editor.DecoratorEditor:OnSceneGUI() (at Assets/Plugins/LandscapeAutoMaterial/Editor/DecoratorEditor.cs:249)
VEAGames.LAM.Editor.TerrainEditorDecorator:OnSceneGUI() (at Assets/Plugins/LandscapeAutoMaterial/Editor/TerrainEditorDecorator.cs:183)
UnityEditor.DockArea:OnGUI()

何のエラーなのかわからないので,コメントアウトして黙らせる(ぉ
DecoratorEditor.csの131行目の先頭に//を付けて保存する
//                    Debug.LogError(string.Format("Could not find method {0}", method));

これはエディタ上で動作するスクリプトで,実際のゲームには影響が無い
恐らく設定を変える事で初期化されるためで,これから元通りオブジェクトを置いていく間にエラーが解消されるものと思われる

●草を風になびかせたい
Unityの WindZoneと連携するようです

1.Unityメニューの GameObject→3D Object→Wind Zoneでシーン上に WindZoneオブジェクトを追加
2.Inspectorの Add Componentボタン→Scripts→VEAGames.LAM→LAM Windを追加

そうすると,草が風になびくようになります
ちょっと強風すぎるので調整方法を模索中ですが(*'-')

●樹木を生やしたい
草は自動的に生えるのですが,樹木は生えません
デモ動画を見ると,樹木も沢山生えていますので,できるはずです

https://youtu.be/XqRax4xPy_M
このチュートリアル動画で,樹木を置いているようなのですが,解像度が悪くて何をやっているのかよくわからない(ぁ

でも,通常のテレインには設定アイコンの右には何もありませんので,きっとそこに秘密がある('-'*)
クリックすると,Multi-paint foliageと表示される。foliageと言えば下にある LAM Batched Foliageですよね?

そこから,試行錯誤の末,樹木を置く方法がわかりました

〇樹木を手動で置く方法
jyumoku1
Inspectorの Terrainの一番右にあるアイコンをクリックして,Multi-paint foliageモードにする

jyumoku2
Selected presetのプルダウンをクリックして,Leave Treesを選択する

jyumoku3
Paintsに表示された Tree_Leave_04(#26)~をクリックして選択して,Densityを 1に設定する

この状態でシーン上をクリックすると,そこに樹木が配置されます

尚,何に影響があるのかわからない為,Updateは押さずに毎回 Densityを 1に設定し直した方が良いです
もう少し解析を進めたら,きちんと設定保存可能な方法がわかるでしょう

つづき)

まだまだ,Sequenceに突っ込んでいきます。どんだけ長くなるんだよと(*'-')
画面からはみ出て線が引けないよ!

↓最後に,ユニティちゃんのソース中では先頭に書かれていた,アニメーター用の部分を追加します
anim.SetFloat ("Speed", v); // Animator側で設定している"Speed"パラメタにvを渡す
anim.SetFloat ("Direction", h); // Animator側で設定している"Direction"パラメタにhを渡す
anim.speed = animSpeed; // Animatorのモーション再生速度に animSpeedを設定する
44.Tasks→Actions→Basic→Animator→Set Float Parameterを追加し,Sequenceの下に追加
45.Set Float Parameterの Inspector→Target Game Objectは None,Paramater Nameに Speed,Float Valueに vartial変数,Set Onceのチェックは外すに設定する
46.Tasks→Actions→Basic→Animator→Set Float Parameterを追加し,Sequenceの下に追加
47.Set Float Parameterの Inspector→Target Game Objectは None,Paramater Nameに Direction,Float Valueに horizontal変数,Set Onceのチェックは外すに設定する
48.Tasks→Actions→Basic→Animator→Set Speedを追加し,Sequenceの下に追加
49.Set Speedの Inspector→Target Game Objectは None,Speedに 1.5を設定
ここの Speedは本来 animSpeed変数なので,元ソースと同じように変数にして可変にしても良いと思います

これで実行すると,ユニティちゃんが走り回ります
画面上でマウスを動かしても,ユニティちゃんが走り回ります

つづき)

まだ続きます('-'*)
↓この部分ですが,BehaviorDesignerに if文は無い(と思う)ので,Selectorを使ってどれかを実行にします
if (v > 0.1) {
velocity *= forwardSpeed; // 移動速度を掛ける
} else if (v < -0.1) {
velocity *= backwardSpeed; // 移動速度を掛ける
}
12.Tasks→Composites→Selectorを追加し,Sequenceの下に追加
まずは,if (0.1 < v)の部分を作る(私の自分ルールで必ず左が小さいなので逆にした)
13.Tasks→Composites→Sequenceを追加し,その Selectorの下にくっつける
14.Tasks→Conditionals→Basic→Math→Float Comparisonを追加して,その Sequenceの下にくっつける
15.Float Comparisonの Inspector→Operationに Less Than,Float 1に 0.1,Float 2に vertical変数を設定
そこに if文が成立した時の処理を追加する
16.Tasks→Actions→Basic→Vector3→Multiplyを追加し,Sequenceの下に追加して,Float Comparisonの右に置く
17.Multiplyの Inspector→Vector 3 Variableに velocity変数,Multiply Byに 7,Store Resultに velocity変数を設定
ここの Multiply Byは本来 forwardSpeed変数なので,元ソースと同じように変数にして可変にしても良いと思います

次に else if(v < -0.1)の部分を作る
18.Tasks→Composites→Sequenceを追加し,Selectorの下に追加して,最初の if文の Sequenceの右に置きます
19.Tasks→Conditionals→Basic→Math→Float Comparisonを追加して,その Sequenceの下にくっつける
20.Float Comparisonの Inspector→Operationに Less Than,Float 1に vertical変数,Float 2に -0.1を設定
21.Tasks→Actions→Basic→Vector3→Multiplyを追加し,Sequenceの下に追加して,Float Comparisonの右に置く
22.Multiplyの Inspector→Vector 3 Variableに velocity変数,Multiply Byに 2,Store Resultに velocity変数を設定
ここの Multiply Byは本来 backwardSpeed変数なので,元ソースと同じように変数にして可変にしても良いと思います

これで if文は終わりなのですが,実はこのままでは,両方の条件を満たさなかった場合に,上の Selectorに trueが返らないので処理が終わってしまいます
そこで,最後に適当なダミー処理を追加しておきます
23.Tasks→Actions→Basic→Time →Get Timeを追加して,Selectorにくっつけて,一番右に置く

その次にあるジャンプ処理はスキップして,その次の処理,
// 上下のキー入力でキャラクターを移動させる
transform.localPosition += velocity * Time.fixedDeltaTime;
Time.fixedDeltaTimeというのは,FixedUpdateメソッド用なので,通常の Time.DeltaTimeを取得して使用します
24.Variables→Nameに deltatime,Typeに Floatで Add
25.Tasks→Actions→Basic→Time→Get Delta Timeを追加
26.Sequenceの下にくっつけて,先ほどの if文の Selectorの横に置きます(中じゃないですよ)
27.Get Delta Timeの Inspector→Store Resultに deltatime変数を設定
28.Tasks→Actions→Basic→Vector3→Multiplyを追加し,Sequenceの下に追加
29.Multiplyの Inspector→Vector 3 Variableに velocity変数,Multiply Byに deltatime変数,Store Resultに velocity変数を設定
30.Variables→Nameに localposition,Typeに Vector3で Add
31.Tasks→Actions→Basic→Transform→Get Local Positionを追加,Sequenceの下に追加
32.Get Local Positionの Inspector→Target Game Objectは Noneのまま(実行時に自身のオブジェクトがセットされます),Store Valueに localposition変数を設定
33.Variables→Nameに PlayerPos,Typeに Vector3で Add
Propertyの右の三角→unitychan_dynamic_locomotion→Transform→positionを設定
34.Tasks→Actions→Basic→Vector3→Operatorを追加し,Sequenceの下に追加
35.Operatorの Inspector→Operationに Add,First Vector 3に localposition変数,Second Vector 3に velocity変数,Store Resultに PlayPos変数を設定

あとはコレ
// 左右のキー入力でキャラクタをY軸で旋回させる
transform.Rotate (0, h * rotateSpeed, 0);
36.Variables→Nameに rotatespeed,Typeを Floatで Add
37.Tasks→Actions→Basic→Math→Float Operatorを追加し,Sequenceの下に追加
38.Float Operatorの Inspector→Operationを Multiply,Float 1を horizontal,Float 2を 2,Store Resultを rotatespeed変数に設定する
ここの Float 2は本来 rotateSpeed変数なので,元ソースと同じように変数にして可変にしても良いと思います
39.Variables→Nameに rotate,Typeに Vector3で Add
40.Tasks→Actions→Basic→Vector3→New Vector 3を追加(※自作していなければ存在しません)し,Sequenceの下に追加
41.New Vector 3の Inspector→Float Value Xに 0,Float Value Yに rotatespeed,Float Value Zに 0,Vector 3 Variableに rotate変数を設定
42.Tasks→Actions→Basic→Transform→Rotateを追加し,Sequenceの下に追加
43.Rotateの Inspector→Target Game Objectはデフォルトの Noneのまま,Euler Anglesに rotate変数,Relative Toに Selfを設定

これで,動き回れるようになっているはずです

つづく)

↑このページのトップヘ