【ゲームエンジン】Unity初心者質問スレBuild3

■ このスレッドは過去ログ倉庫に格納されています
2020/01/11(土) 14:28:59.18ID:wPvGtAaQ
ゲームエンジンUnityを楽しむ初心者による初心者の為のスレ
その為「アセットを購入しましょう」「チュートリアルやれ」「ググレカス」等禁止
初心者が親身になって初心者に教える。
又ググレの場合、何のキーワードでググるのか書いてね

●リンク
・Unity(日本公式サイト)
http://unity3d.com/jp
・マニュアル
 http://docs.unity3d.com/ja/current/Manual/index.html
・チュートリアル
 http://unity3d.com/jp/learn/tutorials
・スクリプトリファレンス
 http://docs.unity3d.com/ja/current/ScriptReference/index.html
・FAQ
 http://unity3d.com/jp/unity/faq
・MSDN
 http://msdn.microsoft.com/ja-jp/ms348103←スクリプトのエラー番号をこれで検索すると原因が日本語で出てきます。
※前スレ
【ゲームエンジン】Unity初心者質問スレBuild2
https://mevius.5ch.net/test/read.cgi/gamedev/1557293737/
2020/01/16(木) 15:50:32.52ID:KnIqTgOi
>>116
絶対赤字だよお
119名前は開発中のものです。
垢版 |
2020/01/16(木) 16:40:41.74ID:JHlZDhFA
>>117
それ試したのかな?
メッセージ3つ以上になったときダメな感じするけど
120名前は開発中のものです。
垢版 |
2020/01/16(木) 16:43:41.04ID:JHlZDhFA
と言うかそもそもメッセージ1つだとfor 文回らんのじゃないか?
そちらの環境だと動くの?
2020/01/16(木) 19:25:05.99ID:IlvXKjzu
a = 120640 / 23270
が何回やっても5になるのですが理由わかる方いらっしゃいますか?
5.184....になるはずなのですが。

aはint float doubleに変えて試しました。
2020/01/16(木) 20:27:07.72ID:IlvXKjzu
(double)を数字の前に付ける事により解決しました、すみません。
2020/01/16(木) 20:32:59.73ID:ROtYDo05
>>121
https://i.gyazo.com/b0a4f570a9d3c3fcc7cb740cfa8c58cf.png
124名前は開発中のものです。
垢版 |
2020/01/16(木) 20:38:02.01ID:0GLcsHOa
>>121
aがなんの型になってるとか確認する癖つけた方がいいぞ
float aとかにしてたらどのみち同じようになんで?ってなってそうだけど
125名前は開発中のものです。
垢版 |
2020/01/16(木) 20:49:07.04ID:JHlZDhFA
>>124
aもそうだけど数字をどう扱うか
10はint だが
10fはfloat
int 同士の計算は当然int になる
2020/01/16(木) 21:20:23.75ID:IlvXKjzu
https://blog.jnito.com/entry/20110910/1315605311

ここを見て解決した気になってましたが、float型やdouble型にint同士の計算を入れているからダメだったんですね。

計算した結果が少数ならfloatかdoubleにいれれば良いと思っていました。

勉強になりました、ありがとうございます。
2020/01/16(木) 21:21:35.57ID:71qtQAGF
>>125
なるほど。
普通は上記使い方しないからなかなか分からんかったw
2020/01/16(木) 22:22:42.98ID:3nBiw/QG
まだunityを触っていないまま質問です

32×32サイズでクォータービューの2Dドット絵のマップチップをAsepritで作っているのですが
チップ同士を隣接させたところ、隙間ができてしまい、グリッドがずれてることに気付きました

例ですが、このグリッドベースでオブジェクトを打てば隙間も無くピッタリなのですが
https://i.imgur.com/ikpyFCU.png

自分が打っていたグリッドベースを数えたらこのような隙間が空いていました
https://i.imgur.com/HVGNEeR.png

32×32の場合、必ず前途したベースでないとだめなのでしょうか?
unity側でグリッドの補正等出来ますか?
2020/01/17(金) 00:07:10.08ID:DQl2Cdvo
>>127
C#に限らず、大体どの言語もそんなだから覚えておくと吉
2020/01/17(金) 00:19:36.74ID:y9XjThLN
>>129
うん、ありがとう。
131名前は開発中のものです。
垢版 |
2020/01/17(金) 07:49:58.48ID:YRNiJPaW
>>128
どんなサイズでもきっちり隙間無く書かないと並べたときに綺麗に並ばない

もし、隙間あけるなら必ず同じように空けないとダメ
一応unity 側で調整出来るけどきっちり作るのがベター
2020/01/17(金) 08:16:58.28ID:Y0yz8WGH
>>131
ありがとうございます打ち直します
133名前は開発中のものです。
垢版 |
2020/01/17(金) 09:26:42.32ID:5AmoHC5L
>>125
だからfloat a=9/8とか書いてあれfloatなのに少数どこ言っちゃったのってならないようになるって話なんだが
134名前は開発中のものです。
垢版 |
2020/01/17(金) 09:28:18.13ID:5AmoHC5L
なるって話 じゃねぇ、なって話 だ
逝ってくる
135名前は開発中のものです。
垢版 |
2020/01/17(金) 09:53:56.24ID:YRNiJPaW
>>133
言語仕様だから突き詰めたいならプログラムスレでどうぞ
136名前は開発中のものです。
垢版 |
2020/01/17(金) 11:20:10.03ID:5AmoHC5L
>>135
ん?俺なんか間違ったこと言ってるか?
そういう風に書くとint計算で端折られたのなんで?ってならないようにしときって言ってんだけど。
煽る前に読めよスカタン
2020/01/17(金) 11:35:00.16ID:7o/zONHK
日本語、難しいアルね
2020/01/17(金) 12:46:45.20ID:iePOXEZj
>>136
float a = 9 / 8;

これだとfloat型の1がaに入るわけだが型チェックとか何が言いたいんだお前
2020/01/17(金) 13:17:59.17ID:A1JDxx3q
ケンカはやめて
争わないで
2020/01/17(金) 13:49:21.56ID:7o/zONHK
たぶん、なっ。と、なるな。の受け取りでズレてる。
同じこと言ってる。その気はないと思うけど、マウントの取り合いみたいにこじれてる
2020/01/17(金) 13:55:10.39ID:dXLmY07g
むきー!9/8はint型でしょ!
if((9/8) is int)で判定しろ!

ってことじゃねつまり?
2020/01/17(金) 13:57:54.77ID:7o/zONHK
いえ、言ってないと思いますw

今ノダメ観てるから、ノダメの映像が浮かびました。ムキーッで。
143名前は開発中のものです。
垢版 |
2020/01/17(金) 14:01:37.50ID:YRNiJPaW
>>142
id スゲーな
144名前は開発中のものです。
垢版 |
2020/01/17(金) 15:26:21.56ID:vgfUBkK+
>>138
文盲乙
2020/01/17(金) 16:41:22.53ID:7o/zONHK
>>143
私のレス、読みましたね。購読料集金に来ましたw
2020/01/18(土) 10:01:35.73ID:X4kcE6Zm
>>115
Twitterでプレイ動画とURL貼ってPRしろ
アプリ出すだけでDLされるなんて甘い考えは捨てろ
開発関連のイベントで会った人全員にDL用QRコードの入った名刺を渡せ
147名前は開発中のものです。
垢版 |
2020/01/18(土) 10:45:09.64ID:MDBAXKOZ
しろ、捨てろ、わたせ
何んで、おこってんの?
カルシウム足りないの?寝不足なの?
2020/01/18(土) 20:07:26.70ID:xPWOBapd
3Dアクションゲームを作ってて、いよいよ敵の行動ロジック(いわゆる敵AI)を書き始めたけど、
何か基本的なセオリーってあるの?

とりあえず、以下のように考えてる。
1:プレイヤー索敵(ランダム範囲パトロール)
2:プレイヤー発見・追跡
3:プレイヤー捕捉・攻撃

現在、2 と 3 の基本的な処理は出来た。
149名前は開発中のものです。
垢版 |
2020/01/18(土) 22:16:28.58ID:gu+t92SX
あせっとをかうのがセオリー
2020/01/18(土) 22:36:12.99ID:sRYPYeXb
>>148
君のゲームの仕様わからんからなんともw
まぁ、そんなところでいいんじゃないかな。
あとはそれをもとに、こんな動きしてしまうけどこういう動きにしたいどうすれば?と聞けば良いかと。
2020/01/18(土) 23:47:19.34ID:X4kcE6Zm
>>148
それはAIではない
152名前は開発中のものです。
垢版 |
2020/01/19(日) 00:06:48.70ID:310P+bV6
んじゃAIの定義を是非
2020/01/19(日) 01:05:02.78ID:EOHxfdla
>>150
ありがとう、[索敵]⇔[追跡]⇔[攻撃] の超基本が実装出来た。
"無" から作成したおバカな敵AIだけど、フィールドで彼が徘徊している姿を見て、
とてもゲームらしくなった気がした。

また、索敵判定にスフィアコライダーをトリガーで使ってるけど、円じゃなくて扇形で判定出来れば、
後ろから敵に気づかれずに近づくとか出来るけど、複雑じゃなく簡単な扇形判定方法はないんだろうか?

あと UniRx が有能過ぎた、もうこれなしで作れる気がしない。
2020/01/19(日) 02:32:04.52ID:TBz8d+il
>>153
メッシュコライダに扇型を入れる
155名前は開発中のものです。
垢版 |
2020/01/19(日) 05:57:07.08ID:sNg7suvy
タイルパレットを使って、ステージを作ってる時のScene画面なんですが
この右下の窓が邪魔なんです。これを消すなり動かすことは出来ないのでしょうか?
ただでさえ小さなScene画面なのにこれが心底邪魔でイライラします、、、
https://download1.getuploader.com/g/zipcodezipcode/219/tilemap.png
2020/01/19(日) 07:36:19.91ID:VcE2c620
まずscene画面を大きくすればいいんじゃないか
2020/01/19(日) 09:47:15.38ID:pFV/J70z
>>153
扇形はスフィアなりサークルコライダーの中に入ったら、自分と敵の角度を出して判定すればいいんじゃない?
2020/01/19(日) 11:41:02.55ID:EOHxfdla
>>154
メタセコで扇型のメッシュ作ってメッシュコライダーに設定したら、
やりたかったことが、いとも簡単に実現出来た!
ありがとう、最良の解決案だった。

>>157
んー 二つのベクトルの角度の計算とかちょっと直ぐには思いつけなかった。
でもサンキュー
2020/01/19(日) 19:47:41.79ID:EOHxfdla
敵AIの実装はひとまず出来て納得した。

次は爆弾の処理を作ろうと思う。
メタセコで爆弾の3Dモデル作ってプレハブ化したところ。

プレイヤーが爆弾を持って運んで、置いたら(投げたら?)爆発する感じかな。
そして、爆弾を爆破させたら破片を飛ばして、その破片が当たったオブジェクトが
破壊される感じ。

でも、文章で書く処理の想定と、実際のコーデイングに "差" があるとなかなか難しいよね。
爆弾の破片は ”破片用” のプレハブを作成して多数クローン?してリジッドボデイを飛ばそうと思うけど、
そんな感じの処理でいいのかな?
2020/01/19(日) 20:29:29.66ID:TBz8d+il
それは流石に色々できるから正解は無い。
それでどうぞ。
161名前は開発中のものです。
垢版 |
2020/01/19(日) 20:46:35.85ID:5MKiJb2W
>>159
そう言うのに手裏剣使うのもアリ?
2020/01/19(日) 21:15:28.29ID:EOHxfdla
>>160
サンキュー、絶賛実装中。

>>161
手裏剣ってなんだ? と思ったらパーティクルシステムのことなのね。
今回はパーティクルは使わないつもり、ってか使ったことない。

爆弾がn秒後に爆発して破片オブジェクトを飛ばすとこまで出来た。
プレイヤーが持ったまま爆発したら、キャラの IK がそのままになるので、
爆弾側からの強制パージが必要だった。
163155
垢版 |
2020/01/19(日) 21:29:25.22ID:sNg7suvy
え、まさかレスがもらえないとは思えませんでした。

消す方法は無いってことでいいですか?
164名前は開発中のものです。
垢版 |
2020/01/19(日) 23:06:24.48ID:7w1DRTId
無いんじゃね
まぁアセットだからソースいじればできっかもだけど
165155
垢版 |
2020/01/19(日) 23:16:04.05ID:sNg7suvy
そうですか、自分はノートパソコンでやってるんで
scene画面を大きくするという解決方法じゃラチがあかんのです。
うーん、残念です。
皆さんありがとうございました。
2020/01/20(月) 04:40:22.99ID:KMQ3boOi
何インチのノート使ってるんだ……?まさかそっちがそもそも小さいとは思わんかったわ
167名前は開発中のものです。
垢版 |
2020/01/20(月) 06:26:23.40ID:3GyQd84/
デュアルディスプレイという選択肢
168155
垢版 |
2020/01/20(月) 10:27:29.13ID:PqKPcOnL
>>166
13インチです^^;スペックは問題無いんですが
画面は小さいの買ってしまってたんで、、
Unityで作りたいゲームがファミコン風だったんで
いけそうだと思ってるんです。

話しついでにもうひとつだけ相談させてほしいのですが
自分はファミコン風(256×240)という解像度低いゲームを制作しています。
ドット絵が崩れないように現在すべての画像のPixels Per Unitを「1」にしているんです。
こうすると低解像度(16×16のプレイヤーキャラとか)の画像たちが
ゲームビューをいくらズームアップしても崩れないんです。
しかしそのこと?で別の困ったことがあるんですが
ピクセル移動を想定した数値を入れると
まるで1ミリずつの移動みたいに牛歩ってしまうんです。
(ジャンプもちょびちょびしか動かない)。
本来、16の幅しかないプレイヤー画像なんで
毎フレーム5も入れてやるとスムーズに進むように見えるはずが
現状毎フレーム50を入れてやらないとスムーズに見えません。
なぜ十倍もの値にしないといけないのかわかりません。
ファミコン風のゲーム制作を独学でやろうとしてる状態なんで
これが正解なのかもわからず、、、同じ苦労を分かち合える人もおらず
不安なんですが、
16×16の画像に対して、
この何倍もの数値を入れなきゃスムーズな移動にならないのは
どうしてでしょうか?
Pixels Per Unitを「1」にしたせいだとするなら
Pixels Per Unitの値とは本来何を想定して決めるものなのでしょうか。

お手数かけてもうしわけないのですが
本当に困っていまして、そこら辺のこと教えていただけると助かります。
169155
垢版 |
2020/01/20(月) 10:29:30.00ID:PqKPcOnL
>>167
>デュアルディスプレイ

それもありですね、、
13インチであまりに支障がある場合は
検討したいと思います。
ありがとうございます。
2020/01/20(月) 10:59:54.15ID:/eP03yfp
13インチで開発とか苦行すぎるだろw
171155
垢版 |
2020/01/20(月) 11:12:39.22ID:PqKPcOnL
>>170
そんなこと凹むこと言わないで(^^;)
2020/01/20(月) 11:14:33.79ID:3OCzu0qv
>>168
Pixel per unitは一般的にはタイルのサイズにする。
スーパーマリオで言うとブロック1個分。
そうすると、座標がキリのいい数字になるのでなにかと便利だから。

そして、ドットが崩れないようにレンダリングしたい場合は、package managerからインストールできる2D Pixel Perfectを使うといいかもしれない。
2020/01/20(月) 11:33:00.35ID:hAo3BM7z
>>168
>Pixels Per Unitの値とは本来何を想定して
FPSって分かる? FramePerSecond 秒あたりのフレームだよね
じゃPPUは、字の通りでUnitあたりのピクセルの数となる
ユニットはScene画面に出てる四角い枠の事、
PPUが通常100になってるけど、これは1unitあたり100ピクセル表示すると意味
ちなに1unitがゲーム内でどんな長さになるかは公式参照、それが動くスピードにも関係する
https://docs.unity3d.com/ja/2017.4/Manual/BestPracticeMakingBelievableVisuals1.html

で、こんな2つの画像があったとしよう
https://i.gyazo.com/03716835d21c56b66700822772f00111.png
これをそのまま100で取り込むと見得ないほど小さくなる、1にすればめちゃ大きくなるし、当然2つの画像は違う大きさのままになる
これを同じにするためにPPUをそれぞれ16、32にする、すると
https://i.gyazo.com/ceddb8fa4ae37c991d362757f64ab4f8.png
このように同じ大きさで収まる訳

こんなんで分かるかな?
174名前は開発中のものです。
垢版 |
2020/01/20(月) 11:37:29.53ID:w54rhdgo
にじむ場合はFilterModeをPoint(のFilter)に変更するといいよ
175155
垢版 |
2020/01/20(月) 12:33:25.92ID:PqKPcOnL
>>172
ありがとうございます、>>173のレスも考慮した上で
PPUは「1」だったのを「8」にしました。
妥当でしょうか?
実は2D Pixel Perfectもすでに導入したんですが
使い勝手がまだ微妙で、、、詳しく解説してくれてるページが
そんな無くて、、

>>173
ありがとうございます。
めちゃくちゃわかりやすく理解が進んだ感じがしました。
一応理解したまとめを報告しますと
1unit=sceneviewに見えるグリッドの1マス
PPU=グリッドの1マスに収まるピクセル数
つまり、各画像に設定するPPUは
この画像はそのPPUを想定したサイズにする、ということ。
なので各画像のサイズを任意に決めれる。
ということでよろしいでしょうか?

>>174
ありがとうございます。
調べてすでにそうしております。
2020/01/20(月) 12:35:27.37ID:vt7bcNpw
>>170
個人製作で規模小さけりゃ気にならないです。
個人差ですかね。
177155
垢版 |
2020/01/20(月) 12:36:10.56ID:PqKPcOnL
昨日の質問と違い
ありがたいレスをいくつも頂けて、
泣きそうです。

三人様、ありがとうございます。
2020/01/20(月) 12:55:49.34ID:vt7bcNpw
泣きそうだと?中途半端な奴め、泣け!w
179155
垢版 |
2020/01/20(月) 12:56:15.91ID:PqKPcOnL
すみません、調べてもわからず解決してないことが他にもあって、
どなたかこれ原因わかりませんか?(^^;

https://download1.getuploader.com/g/zipcodezipcode/220/maincamera.png
これは自分のメインカメラのインスペクタなんですが
Sizeの項目、どのブログを拝見しても
「想定する画面サイズの半分の数値(画面の横幅が400なら200)を入れましょう」
って書いているのに、自分はここの数値をいじれないんです。
数値を変えても決定すると元の数字(ここでは画像にある7)に戻るんです。
この項目に矢印をあてて左右のドラッグでも数値は動きません。

なぜですか?
皆さん、当たり前のようにここの数値は任意で決めれるみたいに書いてあるので
非常に困惑しております。。。
2020/01/20(月) 13:22:23.52ID:w54rhdgo
>>179
まっさらな新規のプロジェクトでもダメですか?
181名前は開発中のものです。
垢版 |
2020/01/20(月) 13:29:27.18ID:w54rhdgo
もし180の状態で大丈夫なら、CinemachineBrainが悪さしていると考えられます
当方。2019.2.17f1ですが、まっさらな状態では全く問題なくsize変更できるので

そちらの環境問題か、もしかしたらエディターのバージョンによるバグか難しいとこです
もしまっさらな状態でも同じ症状なら、エディターのバグも考えられるのでバージョン合わせてこちらでも確認してみますのでバージョン教えてくれると助かります
バグと確認できたら、それはもうunityさんに報告するしかないような・・・
182155
垢版 |
2020/01/20(月) 23:15:35.35ID:PqKPcOnL
>>181
レスありがとうございます。
さきほど仕事から帰り確認が遅くなりました。
まさに181さんのご指摘通りでした、、、
「Cinemachine Brain」のチェックを外すと
なんと数値が好き放題変更できました。
「悪さしている」とのことですが、、これはどういうことでしょうか
Cinemachine Brainはチェックを外したままでいいのでしょうか?
それとも、Cinemachine Brainを削除してインストールし直した方がいいとかですか?
2020/01/20(月) 23:23:06.93ID:FXjCh/jh
オート操作にBGMをくっつけて簡単なデモを作ってるのですが毎回毎回微妙に音ズレがしてしまいます
フレームを30に固定しても駄目でした、何か重い操作があるとBGMと同期がとれなくなってしまうみたいですが
どうにかして同期を取る方法はないでしょうか?
2020/01/21(火) 00:42:25.80ID:xWdssdmX
>>183
デモならタイムライン使うのが楽でいいんじゃない?

もしくはゲーム時間の進行をaudio sourceのtimeから作るようにすればズレないんじゃないかね
2020/01/21(火) 10:33:07.11ID:4lKB/S8y
>>182
アセット関連なんで作者に聴くのがいいと思うけど
https://blogs.unity3d.com/jp/2018/07/17/cinemachine-for-2d-tips-and-tricks/

とりあえずカメラはViutualCameraの設定を変えるんじゃないかな?

何が原因か突き止めるには、プロジェクトを単純化するに限るので
まっさらなプロジェクトにCinemachineBrainだけ入れてみてどうなるかですね
186155
垢版 |
2020/01/21(火) 12:35:35.08ID:MXzB69W0
>>185
>まっさらなプロジェクトにCinemachineBrainだけ入れてみてどうなるか

これを試してみようと思います。
なんにせよ原因を当ててくださったので非常jに助かりました。
ありがとうございます。
2020/01/21(火) 16:25:37.81ID:q2cUKp57
クォータービューのマップを作ろうと
自分で打ったドットタイル32×32(png)をタイルパレット(isometric)にDDしても表示されないのですが何故ですか?
assetsには表示されてます
2020/01/21(火) 16:33:51.87ID:q2cUKp57
すいません解決しました
2020/01/21(火) 18:04:38.26ID:yyMJ8NI+
mac版バージョン2018.4.11f1
unityにautosave機能を追加したいんだけど
有志配布のものはすべて2018には対応せず…
良いのない?
二時間頑張ったのがパー、もう嫌だorz
2020/01/21(火) 18:15:08.15ID:yyMJ8NI+
あった
解決しました
2020/01/22(水) 11:09:38.22ID:tfrN0HGP
                    \     ,
             、   |      ヽ  /
             \  |     x|ー/‐- 、    r‐、
           , -―\l_ /`ヽー==ミx、 \ r勺人__
          /    / !|   \   丶  l:|;;/;;;;___;;}
         /:/  / / / 从 {丶  \   :\弌;;;;/ //
          l:/ /  / 〃/l/ヽ \\-‐\:::.....lハ: 〉;;三;;(
        / /  /|  | l|-|‐-、\ト ィ==y!:::::/l::| {又又}          x%フ广l
    ー=彡イ:::/::. ,.::|::..::Vィ==ミ  、 \  ノ/! |/‘7¬イ        /%゚//
          |:::l|::::|::|/乂:::::ヾ   _, -―1/l|ノ}/  /  /           //゚//
          |:::i|::人| l |≧ァ`` ヘ/   | 八 |  /  /        /ヽ_彡 '
          乂l'   \/ / ゝ、 \ _,ノ /  \/  /      / /
                /丶{   `≧ァーく( _,> '´  /      Xニ⊇:′
          /       /⌒ ¬f工¨|    /、 \  ./  r「’|
          /      /     ||__」 レ=≦、    / /「| | l|
        /        /l  , -―ァ≠¨l | ;/ |\,_/ /}又又i「 - 、
        / /     /,,;|   /,; 〃ヽノ/, |/ ∠_ ‘7¬イ   \
        / /  _   /,,;;;l>'´,,,;;;; /  / /^l/ /;;;/ `Y   | \  丶
        / /  〈 〈>'´; .;;;;;;;;;;;;;;;;;;;;;;/_/   // /`≧'‐ 、ヽ  〉  丶   |
       ,':/i  ∧_〉,,;;;;;;;;/´ ̄ ̄´   / /ヽ\    `>-'^\  ヽ |
      /' |  ∨,,;;;;;;;;;/         / /   o:} }     ||   |   l |
     ,:   |   \;;;;;;;|   /\./ /    .//       ||   |   | /
     | |      \|   \   x/    .//       ||  /  /'
      爪 弾 く は 荒 ぶ る 調 べ ! キ ュ ア メ ロ デ ィ !

スイートプリキュア♪の北条響
2020/01/22(水) 11:41:29.44ID:fkmqYQ67
htmlが流行っていた時期、タグのコピペとちょっとした改変でホームページを作ってました

unityド素人でもそんな感じでゲーム作れます?本に書いてある通りの丸コピーではなく

コンセプトはスクリプトを書かないゲーム作りです!
2020/01/22(水) 12:04:57.58ID:Gjke/PAp
無理
194名前は開発中のものです。
垢版 |
2020/01/22(水) 16:38:52.09ID:jAdrPsCn
2020でブループリントみたいなやつ入ってくるんじゃなかったっけ
2020/01/22(水) 20:26:41.16ID:FnFWF1+H
ブループリントはほぼスクリプトなんだわ…
関数がノードにパッケージングされてるだけでやってる事は変わらん
2020/01/22(水) 22:53:26.09ID:r+2nxT98
UniRx 使い始めたら、Awake()、Start() の中に処理が集中するんだけど、
そもそもゲーム開発ではメソッド毎のテストなんての書かない感じ?

てか Unity 開発では ユニットテストとかのテストFWはない?

Visual Studio のクラスビューでメソッドが Awake()、Start() しかない
スクリプトが増えてきて不安になる…
197名前は開発中のものです。
垢版 |
2020/01/22(水) 23:20:39.00ID:6KrHfY+K
Test Runnerと呼ばれる機能がUnityにはあります

ぐぐっただけなので内容までは知らん
2020/01/22(水) 23:41:51.51ID:9P6fyKWd
UniRxって何が良いの?
jQueryみたいなもんでGCが致命的になるゲーム開発だと地雷でしかないと勝手に思ってるけど
2020/01/23(木) 00:09:52.21ID:BeWKcfCr
>>197
ありがとう、自分でも探してみたけど、Unity Test Runner が
公式にあるみたいなんで試してみる。

>>198
むしろ自分が初心者だからこそ UniRx が凄く便利だと感じる。

例えば、Transform の位置情報を加減することと、
Rigidbody に力を加える動きを書こうすると、
それぞれ、Update() と FixedUpdate() に分散して書くと思けど、
UniRx なら Start() の中に両方書けるので分かりやすい。

また、普通にプレイヤーコントローラのスクリプトとか書いたら、
Update() と FixedUpdate() の中身が "if 分岐” だらけになると推測するけど、
UniRx なら、コードから "if 分岐” がなくなりスッキリ分かりやすくなった。

でも確かにGCパフォーマンスは心配。
2020/01/23(木) 00:35:20.23ID:BeWKcfCr
あと UniRx だと、何秒後に とか、何フレ後に とか、何回とか、ゲームに必要な処理が簡単に書ける。
おそらく、まったくのプログラム初心者は UniRx から始めた方が良いとさえ思える。

自分は既に書いてしまった膨大なコードを UniRx を使用するコードにリファクタしつつあるけど、辛い…
誰か最初に教えといてくれよと思った。

まあ Unity初心者の個人的な感想だけどね。
2020/01/23(木) 01:04:15.17ID:k7QW6u8C
>>199
UniRxのTriggersをメインで使ってるってことね
2020/01/23(木) 06:19:45.63ID:xz19b8uw
こんな早朝に人いるかな?
Rigidbody2D.AddForceを使ってジャンプさせているんだけど
rigidbody2D.AddForce(Vector2.up * 数値);って感じで。
しかしこれではジャンプ力(高さ?頂点?)を決めてやれるだけで
ジャンプそのもののスピードはいじれない。
ぽい〜んってジャンプじゃなくて
ヒュンッとしたジャンプをさせたいんですが良い方法あります?

C++時代なら毎フレームに加える数値を増やせばよかっただけなんですよねえ
2020/01/23(木) 08:02:49.45ID:BeWKcfCr
>>202
C++時代みたいが良ければ Update() で Transform に毎フレームに加える数値を増やせば出来るよ。

AddForce は
204名前は開発中のものです。
垢版 |
2020/01/23(木) 08:04:53.53ID:BeWKcfCr
AddForce では加える力を決めれるだけで、それで高さ?頂点?を決めれるわけじゃない。
2020/01/23(木) 08:32:54.21ID:BeWKcfCr
あと多分 質問の状況からすると rigidbody.velocity += Vector3.up + 調整値 で、
FixedUpdate() で、物理フレーム毎に調整値をいじる方が望みの動作を得られる気がする。

でも、それが物理挙動かと言われれば違う気がするし、それなら素直に Transform の数値増減でいいじゃんとも思う。
この辺りどうなんだろうね?

rigidbody.AddForce だけでまともなゲームのジャンプになるの?
2020/01/23(木) 08:43:29.52ID:sYrsRPW1
ジャンプの仕方が目標みたいだから、rigidbodyを極めてもよし、transformでコントロールしてもよし。
好きな方で。
addforceなら、velocityに、加えてgravity値をコントロールするとか試行錯誤だね。がんばれ。
2020/01/23(木) 09:05:35.69ID:o31+m3nu
キャラクターとかはキネマティックにして物理エンジンに任せずに自分で動かした方が思った通りの動きになるんだよね
2020/01/23(木) 10:00:04.83ID:KLj1RF1a
物理計算サイトが検算するのに捗る

自分でスプレッドシートつくる方が身につくけど
2020/01/23(木) 13:04:24.91ID:rlCEa5FQ
>>202
単純にジャンプの速度を上げたいってだけなら、重力を大きくするか、
特定のキャラクターだけそうしたいならRigidbodyのGravityScaleを大きくするとかかな。ただしこれだと落下速度も速くなっちゃうけど。

一時的に物理計算を無視して完全に制御したいなら、transformよりも
Rigidbody.MovePositionを使って動かす方がいいかも。
これなら周りのオブジェクトに物理的な影響を与えながら移動できるし、
fixedupdate内で書くことになるので
「普段は物理無視したいけど爆風に巻き込まれた時は物理に従う」
みたいな実装が楽だよ。
2020/01/23(木) 17:48:04.91ID:9HsMMURI
おっぱいも物理エンジンよりも手で揺らした方がイキイキしている気がする
2020/01/23(木) 17:51:59.32ID:sYrsRPW1
それは物理エンジンが…あ、いやなんでもない。
2020/01/23(木) 20:32:46.84ID:o/nrz+aB
AnimationControler みたくステートマシーンをグラフィカルに編集できるアセットってないっすかね?
AnimationControler と StateMachineBehaviour がありゃステートマシンでやるようなこと何でもできるじゃないのって思ってたけど、
Time.timeScale=0 したら setTrigger しても状態遷移しないし、
やっぱりステートマシンのすべてを AnimationControler に任せるのは無理があるのかなとか思って。
なければ State パターン でハードコーディングすべきなのかなやっぱり。
2020/01/23(木) 20:40:25.80ID:o31+m3nu
>>212
animator.updateMode = AnimatorUpdateMode.UnscaledTime;
2020/01/23(木) 21:43:00.61ID:o/nrz+aB
>>213 うお、そんなオプションが…。解決しました。感謝です。
2020/01/24(金) 04:03:03.22ID:+Fsi074W
すみません、変な質問なんですが Input.GetAxisRaw("Horizontal")
この処理をキーを離さずに一度リセットして認識し直させる方法はありませんか?

、、というのも「ある状況」になるとキーを押しっぱなしのままだと
Input.GetAxisRaw("Horizontal")が認識されない状態になるバグがあり、
一度でもキーを放して押し直すとちゃんと認識されるようになるんです。
その原因がどうにもわからないので、その状況になれば毎度リセットさせたいな、と。

具体的に言いますと
プレイヤーが死んだら即定位置からリスタートする状況のゲームがあって
移動方法はInput.GetAxisRaw("Horizontal")からキー入力を受け取るんですが
プレイヤーが死んだ時に例えば右キーを押しっぱなし(「+1」を受け取り続ける)で死んだとして
押していた右キーをそのまま押したままリスタートを向かえますと
開始直後右入力を認識してない(Input.GetAxisRaw("Horizontal")で受け取る値は0のまま)状態となってしまうんです。
ですが一度キーを放して押し直すと「+1」を受け取るのです。
これだけ聞くとよくあるソースミスと思われるでしょうが、ちょっと
Input.GetAxisRawのバグっぽいんですよね。

とりあえず、プレイヤーが死んでリスタートされる時に
例えばvoid Start()の中に(Input.GetAxisRaw("Horizontal")を
取得しなおす処理を書いてやりたいんです。
これが不思議なことに(Input.GetAxisRaw("Horizontal")を書いただけじゃ
取得しなおしてくれないんですよね、、、、
216名前は開発中のものです。
垢版 |
2020/01/24(金) 07:02:28.39ID:9g9ZzaxQ
バグっぽいと言うのはどこの情報ですか?
2020/01/24(金) 07:54:41.99ID:1mzH9O5r
>>215
普通に考えてリスタートの処理の仕方に問題があるかと。
ゲームオーバーで最初に戻るにしても、インプット関数としては、ゲームオーバーしようがしまいが関係ない。なら、リスタートまでに何か影響のある処理を入れてしまっている事が考えられる。
例えば、start()に取得し直しとか書いてるけど、startをまた呼び出してるの?すまん、私はそんな表記はした事ないから異常に見えました。
2020/01/24(金) 12:14:44.83ID:JiuRt8jn
プレイヤーオブジェクトをDestroyしてる説
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況