【ゲームエンジン】Unityなんでも質問スレpart10
■ このスレッドは過去ログ倉庫に格納されています
>>320
本式で作ると全くの別次元、ステートでclass間を行き来するから
class化の最大の利点のカプセル化と隠蔽が効く
そうでないものは唯のまがい物でバグの温床にしかならないから
if文やswitch文と大差ない >>321
enumで作ってますが、このステート1つ1つがクラスなんですか? そうなるかな
デザインパターンのステートパターンを使う。
例えばIStateインターフェイスを定義して、idleState、moveState、jumpState
を派生させたらメソッドの中身を書く
例えばJump中に横移動させたくないならメソッドの中身に横移動する処理自体なかったら
ステートを変えてclassが変わると横に移動しなくなる。if文やswitch文だとフラグによるから
自分が意識してない想定外のフラグの立ち方が計算式的に成立してしまうとそれがバグになる。
そういう可能性が完全になくなる。 ありがとうございます
今のところ有益な部分がわかりませんが、使っていきます
完全に分離すると簡単に理解します(´・ω・`) まぁ普通は自分で書いたんだから規定通りに動くに決まってんだろって思うじゃん?
デバッガで追ってみて初めてまさかそんなことが起きるのかよって事が起きるからバグるんだよ
https://d.ku★ku.lu/pgkt7ukuu (ngワードになるので★入れたけど、ホント面倒くさいな)
インターフェイスを使ったシンプルなfsmを適当に作ってみた
赤は1、青は2、緑は3しかキーが効かないようになってる
メソッドがないから他の動作はしない
敵のAIに使って例えば、patrol、serch、chase、attack、escapeのように
stateを分解してしまえば、最初からstateで既定した動作以外しなくなる
複雑怪奇なif文を書くより遥かにスッキリするよ if文使うと条件次第で、状態が数十と出来そうですもんね こんちゃ例の奴ですいつも質問すみません
マテリアルの、アルベドにjpgでテクスチャを置きました
そのとき右隣のカラーピッカーはどんな役割をするんでしょうか?
たとえば赤にするとなんとなく赤が乗算されたようなレンダリンになるようですが
すなおにjpg画像の色を再現してほしいときは、真っ黒?真っ白?
以上よろしくおねがいいたします だね。
まばたきの制御をフラグ管理でやったら目を閉じかけた途中でキャンセルされて
目が全開になるからじゃあフラグ増やすとかやってたらどんどんフラグが増えていくとか
intが1→2→3→4と1つづつ増える筈なのに、2→4になったりして頭抱えるとかね
2時間位デバッガでガチャガチャやってた事あるから流石に懲りた 時々わけのわからん致命的なエラーが出てくるよな
あれを直してほしいわ >>328
マテリアルのパラメーターについて聞くときはどのシェーダーを使っているのか言ってくれなきゃ分からん
乗算っぽいって言ってるんだから乗算してるシェーダーなんだろうと仮定するが
その場合は白を使え
白=RGB全部1 黒=RGB全部0
ってのだけでも覚えてけば「乗算」だろうが「加算」だろうが「減算」だろうがすぐイメージが付くようになるぞ >>331
こんにちは今起きました遅れてすみません
シェーダはstandardですちなみにunityバジョーンは2018です
白にしておくことにしました。ありがとうございます どういうわけか素直にテクスチャの色が出なくなったんです
白っぽく彩度が落ちてグレイッシュです
こういうときに前のマテリアルを復活したくても、複製していなかったらもうアウツなんですよね?
そのへんがどうにも・・・ >>333
standardは環境光の影響を結構受けるからそれかもよ
あと反射の設定が何か影響してるかも
もしくは、流石に無いと思うがポストエフェクトをかけてるとかか unityのコード読んでるとさ
アトリビュート邪魔すぎて読みにくいんだけど解決策ある? アトリビュートが邪魔…とは…?
それ自体にも機能があるんだから読み飛ばしちゃダメじゃね? コマ送りでのアニメーション表現をするにあたって、シェーダーの_MainTexに与えるテクスチャを動的に変更するのってパフォーマンスとか保守性的に大丈夫だと思うか?
Quadにマテリアルを貼り付けてビルボード表現してるからスプライトみたいにアニメーション使えないってのもあってそうしてるんだけど。 パフォーマンス的には1枚のテクスチャにまとめて、アニメーションするシェーダー使った方がいいが、使いすぎなければどっちでもいいんじゃね? 規模小さければ気にしなくていい程度か
なら気になってから変えればいいし一旦このまま行くわ
アニメーション増やすたびに画像くっつけるのだるいしな
さんきゅ DirectXから2D処理無くしたって
てっきり全部ビルボードにテクスチャ貼って2D再現してるんだと思ってたが違うのか? 数年ぶりにUnityで自作ゲーム開発をしたいと考えているのですが
Unityの再学習のため公式チュートリアルを色々とやっていこうと思うのですが
想像以上に数が多く、どれから手を付ければよいのか……
ジャンルは不問で、とりあえず2Dゲームを作りたいとは考えているのですが
何か良いチュートリアルはありますか? 公式のは1つはやっとくべきやね
それと各マニュアルにあるサンプルもね
意外と、おおーってなるの沢山あるよ >>341
少しのお金出しても良いならudemyの講座はどうよ?
今セールで1200円くらいだしな。
ただ買う前に講座内で一部無料で見れるとこあるから、それ見てから買うこと。
こんなんが有料なの?ってレベルのもあるので。 ちゃす
enumでステート作った場合、どうやってステートを切り替えていくんでしょうか?
enum State{
idle,
run
}
var current_state = idle
match current_state{
idle{
print("アイドル時の処理")},
run{
print("走るときの処理")}
}
こんな感じにでステートマシンを作ってるのですが、current_stateの切り替えはどうやるんでしょうか?
キー操作をトリガーとする感じですか? Goto〇〇State関数を作る
stateプロパティを作ってこのstateプロパティに
GotoNormalState()
{
state=State.Normal;
}
のようにして切り替える >>347
>>348
どうもす
変数に代入して切り替えるのはわかるんすけど、その代入のタイミングはキー操作が行われたときなんですかね?
例えば、idleからrunに遷移させる場合、右キーを押しますね。このときにstateをidleからrunに切り替えるんでしょうか。 >>349
どこでもいいよ
例えば入力からAnimatorに何か送るメソッドとかあるならその中でもいい
俺の場合はInputクラス、Attackクラス、Animationクラス、Stateクラスを作っててInputからAttackクラスのメソッドを呼び出したときそのAttackメソッドの中にStateクラスのGotoStateメソッドとAnimatorクラスのAnimatorにパラメーターを送るメソッドを含ませてる こいつはアイドルからランに移る仕方まで教えないとダメやん
そんなん乱数でいいよ
十秒に1回乱数発生させてそれで分岐
これで敵AIの完成じゃ >>346
カッコ付けてFSMの真似事してもそれだと何のメリットないから
普通の平文に戻せば? 言っちゃ悪いけどステートマシンのこと全く理解してないでしょ、この人
生兵法はケガの元っていうし、中途半端な理解で使うくらいなら素直にSwitchで分岐させたほうがいいと思うよ キャラクターの動きをステートマシーンで作りたいならUnityちゃんがアニメーターの中に用意してくれてるんだからそれ使えばよくねって思うんだが
それじゃダメなのか? こんにちはいつもの奴です
マテリアルが白っぽい件はまだ解決しておりませんが
また困ったことがおきました
シーンを開くとハイアラーキの中がMissingPrefabばかりで何もなくなりました
これはシーンファイルを別プロジェクトに移動したせいとおもわれますが
何のプレハブが本来あったかは見つける方法ありますか
もしくはかたっぱしのプレハブをシーンと同階層に置いたら復活するとかありますでしょうか
以上よろしくお願いします >>357
ハイアラーキはネイティブすぎるw
日本ではヒエラルキーの方が通じるぞ
移動っていうのがどうやってやったかにもよるかな
metaファイル毎移動してれば復旧はできるけど、metaファイルを移動してなくて新プロジェクトで再生成されてたらGUIDがズレてしまってるから助からないな シーンファイルはアセットファイルへのリンクが書かれてるだけのファイルだからリンク先のデータも一緒にコピーしていかないと意味ないぞ
そしてファイルの階層は関係ない
リンクはmetaファイル内のGUIDというIDを目印にしてるからmetaファイルさえ無事ならばmissingにならない missing修正してくれるのあった気がする
前使ったことあったが100%じゃないんでガッカリすんな >>345
ありがとうございます
Udemyについても調べてそっちで良さそうなのあったら見て見ます! >>355
継承とインターフェース勉強した方が良いのと、アニメーターとアニメーションイベントで代用出来ないか検討すべき。 前後左右どこでも向けるオブジェクトの向きを、Y軸のRotationから判定して4方向と8方向に分類したい
4方向ステータスと8方向ステータスを作るわけだが、Enumはどんなのが良いと思う?
NEWSかUDLRか……
XZ+Positive or Negative が本来の意味通りなんだろうけど文字数が長くなるし……
いや好きにしろという話なんだけど普段ゲーム開発してる人の肌感感を聞きたくてだな 時と場合によるとしか
3Dか2Dか、キャラを回転させて表示するのか切り替えるのか、
マップを意識した移動なのか、etc カメラはキャラに完全追従トップダウン
キャラグラは4方向のビルボード
移動は8方向だがキャラから出るRayはグラフィックに合わせて4方向
そんな感じ
カメラ回す予定はないが……万が一があるかもしれんのでUDLRはなしだな! 全く何の必要もない無駄な工程だろ何の意味があるんだよ
だって向きを求めればグローバルでどっち向きなのか出るだろ >>367
まあ、分かるんだけどさ
特に頻出するEnumとかで文字数抑えると脳味噌が楽になるのよ
一回動いたらもう読まないかもしれない関数名とかなら、ここまで悩まないし長くてもいいとも思ってるよ
>>368
アホ?
お前のコードが見てみたいわ
絶対読みたくねえ~~~w 式で求めりゃいいだけだから頭で認識する必要すらない訳だが。
固定ならキー入力でスプライトの向きは決定できるしそもそもRaycastに必要のない情報
カメラ変えたいならMatrixでいいじゃん 出来ないの? 昔はUpDown使ってたけど最近はNorthSouthだな 位置ベクトル/向きベクトルの合成式/計算式が分かってないだけじゃねえのか? >>370
そんなマネ出来ないですw
>>371
Z軸の正の方向を北に固定して弊害でたことある?
パッと思いつかないしNEWSにしようかなって思い始めてきてる
>>372
方向ステータスを作ることにメリットがない前提なら、そういう予想になるのも意味は分かるけどな
違います 毎回計算で求めるのは微調整したい時に詰むから普通にダメだよね 二度手間だし蛇足としか思えんな
効率的だとするならソースコードやチュートリアルで頻出しないのは何故? >>375
方向求めるたびに計算書き直す方が二度手間だろ >>373
弊害はないかな
ただ東西南北使うのはenumだけでほとんどはベクトル使うから書いててちょっと違和感はある >>377
弊害ないならNEWSで行ってみるわ
違和感については「アメリカの下のほうにブラジルがある」くらいの感覚でリンクしてみるw
さんきゅ いいんじゃねー
何が弊害かなんか作ってる物によるしな >>376
>方向求めるたびに計算書き直す
キー入力で方向を代入するorスプライトのみ切り替えるだけで
計算の必要すらない事をなぜ毎回計算を書き直すとか意味不明な話になる?
だからあるっつーなら、ソースコードやチュートリアル出してみ
見た事ねーからなんだそりゃって言ってんだろ 意味不明なんだよ >>380
いや、移動は360度行けるんじゃないの?
と思ったけど8方向なのか
まあ見やすくなるならいいんじゃない >>381
大体TPSやFPSと同じだからキャラなんて真ん中にクロスヘアカーソル貼るのと何が違うんだよ
カメラと入力とキャラの相対位置はずっと固定で変化する訳ないじゃん
背景は変わるよ? キャラも入力も不変だろ? 違うのかよ? な、ほら、言った通りじゃん
位置ベクトルも向きベクトルも分からないだけだってw 自分がプログラミング下手なのを棚に上げるためによくここまで他人のこと扱き下ろせるな どうせMAUIとかいうポンコツ荒らしだろ
付き合いきれねえぜ ワイUnityキッズ、たった今System.NumetricsのVectorクラスの存在知り驚愕
Unity依存しないピュアなクラスてどう書けばええねんと、しこしこprivate float xとか、自作Vector2クラスとかやってた模様 まーた基地外四天王に新キャラが追加されたのかよ
そんなに要らねえから巣に帰れよ 面倒臭えな 攻撃などのアクションってコルーチンで動かすのが基本なんですかね?
例えば殴るなら、
殴ってるアニメーション中には入力を受け付けなくしてアニメーションの再生時間だけコルーチンを止めておく
みたいな感じで 処理を同時並行で進めたいだけならコルーチンじゃないほうがいい
何かを待つならコルーチンが良い
UnityのAPIを叩くならコルーチンじゃないとダメ 攻撃にアニメーションクリップ使ってるならアニメーションにイベントつけてそいつで入力判定開始処理呼び出す方法もある
入力判定停止処理の後に攻撃モーション呼び出す→アニメーションからイベント発火→入力判定開始処理
みたいな
まぁ処理じゃなくてフラグでisAttackがtureのときインプットをスルーするif文を入力のところに挟んでアニメーションクリップのイベントでfalseにしたほうが柔軟性効くしいいと思う
フラグじゃなくてenumやクラスのステートマシン作ってもいい >>391、392
サンクス
やっぱりアクションにコルーチンは一般的ではないですかね
いくつか作ってて状態がわからないのは致命的だなあと感じてはいたけど
Switch(enum states)で各メソッドに流すのが手っ取り早いかな 77万円の学校を始めちゃったひろはすさんのことをインディークリエーターたちはどう思ってんの? ひろはすに1000万渡して世界一面白いアクションRPG作らせたい あの人はスマホゲ専門だろ?m9(´・ω・`)ドーン! Cygamesに1000万渡して世界一面白いアクションRPG作らせたい こんつあ質問です
ユニティ標準のシェーダ(Standard)のことですが
いわゆるスペキュラ(光沢)とリフレクション(反射)を制御するマップをアサインするところがわかりません
メタリックとスムースネスというのがあり、これが光沢っぽいのはわかりましたが
マップを置けるのがメタリック側だけです standardに2種類あってspecular版のstandardを使う必要がある >>402
ひゃあわかりにくい
ともあれ教えていただきありがとうございます
Standardシェーダががラフネスやスペキュラーやらで3パターンある意味もわかりません
どれ使っても光沢はだせますよねラフと光沢がどう違うかもわかりません
ともあれ反射マップはアルファチャンネルを使うような意味はわかりました >>404
3種類じゃなくて2種類だし
まずPBRについて勉強した方がいいよ >>406
あーなるほどね
2018の中でも更に古いバージョン使ってるのね
一応解説すると”Standard (Roughness)”は普通の”Standard”とほぼ変わらん
Autodesk系のソフトとUnityのPBRだと拡散反射を表すパラメーターの正負が逆だったから
その互換性を高めるために作られたシェーダーだ
2018.3辺りから”Autodesk Interactive”に名前が変わってるしね
だから実際は金属表現に強いMetallicを選ぶかそれ以外に強いSpecularを選ぶかを判断すれば大体は大丈夫だ というか素朴な疑問なんだけど、なんで初心者っぽい人がサポートの切れた2018なんて使ってんの?
学習にめちゃくちゃ不利じゃない? >>408
あっ……(察し)
例のアレ用途ですから >>407
>>408
だいぶ理解しました
テクスチャが白っぽくなるのも回避できた感じです
なおVaMにもちこむアセットを作っているので2018版じゃないとビルドできないのです ShaderGraph関連で2023じゃないと出来ない機能ってなにか有りますか? ボリュメトリックフォグ対応があった気がする
2022かもしらんが こんにちは例のヤツですいつもお世話なります
朝から結局まだマテリアルでさまよっているます
https://i.imgur.com/Ughcl3L.jpg
この画像の、左の手はスペキュラーマップを貼らないとき
右の手はスペキュラーにグレースケールマップを貼ったときです
なぞの黒ずみが出る理由がさっぱりわからないのです
たしかに光沢は出てくれていますが・・・
なにかヒントあればよろしくおねがいします マテリアルのインスペクタだった
標準のスタンダードシェーダーね GetAxis("Mouse Y")でマウスの移動量を測定して処理する部分があるんですけど、突然誤作動起こすようになりました。
マウスを動かしていないのに動く挙動をするように。
一部の環境でゲームパッド等が接続されていると発生するらしく、自分の環境では発生しません。
音しか拾わないマイクでも同じ症状現れた人もいたみたいで謎過ぎて困ってます・・・
ちなみに、今までは何も問題はなく、突然こうなりました。
UnityのアプデもしてないしInputSystemの設定も変更していません。
この症状が出た後にInputSystemPackage内のSupportedDevicesをキーボードとマウスのみにしましたが、改善されず・・・
バージョンは2022.1.19f1なんですけど、何か分かる方いますかね・・・? OSのデバイスの設定の方で邪魔してるデバイスないか切ってみるとか プレステのコントローラーを繋いでると起こるみたいな話は聞いたことある
これはもう相性次第だからアプリケーションを立ち上げた後にコントローラーを1度外して繋ぎ直しても直らないなら諦めて他のコントローラーにしてもらうか、コントローラーの使用をやめるかするしか無いと思う 418さん、419さんありがとうございます。
僕はプレステ4のコントローラー繋いでやってるんですけど、問題ないんですよねえ・・・
不可解なのがマイクでも同じ症状が発生するらしいのと、コードも設定も何も変更していないのに突然こうなったことです。 ■ このスレッドは過去ログ倉庫に格納されています