【ゲームエンジン】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/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してる説
2020/01/24(金) 16:44:42.21ID:YxoFqWNA
おこなの?
2020/01/24(金) 21:18:19.49ID:lHO70wOG
質問です
編集ソフト間ではテクスチャやマテリアルをFBXに同梱するのは珍しくありませんが、Unity上ではあまり見かけません
単にUnityではFBX内のデータを編集できないから邪魔という理由かなと思っていますが、他にも理由があるのでしょうか?
2020/01/24(金) 21:48:57.86ID:+Fsi074W
>>217
説明が難しいんですが頑張りますね

>普通に考えてリスタートの処理の仕方に問題がある

確かにその通りです
でも別にまだ作り始めですから複雑なことしておらず
Input.GetAxisRaw("Horizontal")で左右移動
Input.GetKey("space")でジャンプ。

バグが起きるのは方向キーを押しっぱなしで一度でもジャンプしたあとに
(その方向キーを押しっぱなしのまま)死亡してリスタート後もその方向キーを
押しっぱなしのままでいると
Input.GetAxisRaw("Horizontal")が認識されない状態になるというものです。
あと、>>218さんの言う通り、
プレイヤーオブジェクトをDestroyしたあとリスタートしています。

ちなみに方向キーは押しっぱなしでも一度もジャンプせずに死ぬと
その方向キーを押しっぱなしのままリスタートしても
Input.GetAxisRaw("Horizontal")が認識され
開始後キャラクターは押している方向に進むんです。

つまり
Input.GetAxisRaw("Horizontal")が入力状態のまま
Input.GetKey("space")を入力し、
Input.GetAxisRaw("Horizontal")の入力を解除しないまま
リスタートすると
押しっぱなしのInput.GetAxisRaw("Horizontal")は仕事をしてくれなくなる
状況です。
(で、一度入力を放すと正常になる)
2020/01/24(金) 21:50:33.57ID:+Fsi074W
ちなみにプレイヤーが死んだ時、プレイヤー作成時に
Input.GetKeyとInput.GetAxisRaw
を記載したりはしておりません。

そもそもInput.GetAxisRaw("Horizontal")の入力を阻止することなんて
こちらがどうこうできるものでは無いはずなんです

で、例えば
int x = Input.GetAxisRaw("Horizontal")としてやって、
xに入る値の動きをデバッグして見ていますが
死ぬ前は右が押されている間「1」が入り続けるんですが
死んだあとDestroyされ右キー押し続けている状態でも「0」が入ってきます
で、そのあとリスタートするわけですが
死ぬ前から押し続けていた右キー押してる間はずっと0のままなんですよ
これはおかしいと思いませんか?
223名前は開発中のものです。
垢版 |
2020/01/24(金) 22:41:41.98ID:9g9ZzaxQ
いやそのスクリプトがデストロイしてるオブジェクトについてたらダメじゃね

って話しじゃないか
2020/01/24(金) 23:07:02.42ID:rtAyfksW
リスタートを実装しているなら、わざわざDestroyしなくてもいいんでは?と思うけど

仮にUnityの不具合で
instaniateされたゲームオブジェクトが継続中のHorizontalを受け付けないのだとしても、Destroyせず最初のプレイヤーのゲームオブジェクトを使い回せばいいんでは
2020/01/24(金) 23:07:28.97ID:+Fsi074W
>>223
おっしゃりたいことはわかります。
もしそういう仕様(デストロイしたオブジェクトに書いてた場合は一度放さないと機能しない)、
なら
ジャンプをせずに(Input.GetKeyを使わずに)
死んでリスタートした場合は
押しっぱなしのInput.GetAxisRaw("Horizontal")が
開始後そのまま機能してるのがおかしいと思いませんか?

要はジャンプしてから死んでリスタートした場合だけ機能しないんです。
226名前は開発中のものです。
垢版 |
2020/01/24(金) 23:18:30.20ID:9g9ZzaxQ
>>225
リスタートすると言うことは新たなオブジェクトだよね
新しいスクリプトなんだから動いて当然だと思うけど

なんなら明日簡単なサンプル作って検証してみようかね
2020/01/24(金) 23:18:50.47ID:+Fsi074W
>>224さんのレスも考慮させて頂いて
一度デストロイ方式を辞めてみましたが
やはり同じ症状でした。
2020/01/24(金) 23:24:37.56ID:7QzIJzpr
>>225
リスタートってどんな処理してるの?
シーンの読み込み直し?
まったく関係ないゲームオブジェクトのUpdateで監視しててもそうなるの?
2020/01/24(金) 23:27:42.92ID:+Fsi074W
むむ、これは、、本当にバグなのかもしれません。
今、限りなくソースをそぎ落としていってるんですが
それでもその症状が出ます。

ほんと、プレイヤーのスクリプトでやってることは
x = Input.GetAxisRaw("Horizontal");
if(x==0){
//止まる処理
}
else if(x>0){
//右へ移動処理
}
else if(x<0){
//左へ移動処理
}
if(Input.GetKeyDown("space") ){
 ジャンプ処理
}

だけなんです。
リスタート後、xにすでに値が入らなくなるので
自分の移動処理やその他のスクリプトは関係無いはずです。
2020/01/24(金) 23:30:48.57ID:+Fsi074W
>>228
シーンの読み込み直しです。
void RestarScene(){
Scene thisScene = SceneManager.GetActiveScene();
SceneManager.LoadScene(thisScene.name);
}
2020/01/24(金) 23:37:49.39ID:+Fsi074W
これは、、、、今
大変なことが発覚しました。。。
2020/01/24(金) 23:39:22.19ID:YxoFqWNA
>>221
1. 方向キー(←押しっ放し)
2. スペース
3. スタート
これで最初の方向キーの入力が消えるってことなら、
安物のキーボードはそこまでの同時入力に対応していないからなとしか
Unityの問題でなくパソコンの仕様だよ
2020/01/24(金) 23:40:43.33ID:+Fsi074W
このバグの発動条件が
左右キーを押しっぱなし中に「ジャンプした」あと死亡したらと思っていたんですが
違いました。

なんと、左右キーを押しっぱなし中に
「キーボードの他のボタン(どれでも)を押した」あと
死亡したらでした!!!

なんと、ゲームで使ってないキーを押しても、この症状が出ます!!!
これはどういうことでしょうか???????????
2020/01/24(金) 23:42:33.68ID:rtAyfksW
シーンを移動するとInputがリセットされる件

で検索

url貼ろうとするとNG食らうので
2020/01/24(金) 23:45:43.21ID:+Fsi074W
>>232
>これで最初の方向キーの入力が消えるってことなら

いや、私の説明を誤解してます。

2. スペース
の後も「1. 方向キー(←押しっ放し)」は生きてます。
そのままその方向に歩いていくし、放せば止まります。
ただ、1.を押しっぱなしのままで歩いて敵に当たったりして死亡したあと
再スタート後に利かなく(Input.GetAxisRawが左右を認識しない)なってるんです。
押しっぱなしのままなら、です。

説明が難しい。。。
2020/01/24(金) 23:55:45.35ID:+Fsi074W
>>234
検索して拝見しましたが
非常に勉強になるブログでした。

しかし自分のケースと少し違う気がしますがどうですか?

なぜなら、自分のケースは
確かに二つ目のキー入力をしますが
その後、その二つ目を放して、シーンを移動します。
つまりシーンをまたぐ時はキー入力は1つなんです。
そのブログのケースと違う気がするのですがどうですか?

あと、もひとつ言いますと
ゲットキーの設定関係なく、
二つ目のキーはパソコンのどのボタンでも
押したら発生します。。。

つまり、
Input.GetAxisRaw("Horizontal")
で右方向キーを入力したまま
パソコンの「w」だの「s」だのどこでも押したあと
(それこそ"Horizontal"では受け付けてない上キーとかでも)
右方向キーを入力したまま死亡して
シーンをやり直すと

右方向キーを入力が利いてない状態でスタートするんです。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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