[過去ログ]
【ゲームエンジン】Unity初心者質問スレBuild3 (1002レス)
【ゲームエンジン】Unity初心者質問スレBuild3 http://mevius.5ch.net/test/read.cgi/gamedev/1578720539/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
201: 名前は開発中のものです。 [sage] 2020/01/23(木) 01:04:15.17 ID:k7QW6u8C >>199 UniRxのTriggersをメインで使ってるってことね http://mevius.5ch.net/test/read.cgi/gamedev/1578720539/201
202: 名前は開発中のものです。 [safe] 2020/01/23(木) 06:19:45.63 ID:xz19b8uw こんな早朝に人いるかな? Rigidbody2D.AddForceを使ってジャンプさせているんだけど rigidbody2D.AddForce(Vector2.up * 数値);って感じで。 しかしこれではジャンプ力(高さ?頂点?)を決めてやれるだけで ジャンプそのもののスピードはいじれない。 ぽい〜んってジャンプじゃなくて ヒュンッとしたジャンプをさせたいんですが良い方法あります? C++時代なら毎フレームに加える数値を増やせばよかっただけなんですよねえ http://mevius.5ch.net/test/read.cgi/gamedev/1578720539/202
203: 名前は開発中のものです。 [sage] 2020/01/23(木) 08:02:49.45 ID:BeWKcfCr >>202 C++時代みたいが良ければ Update() で Transform に毎フレームに加える数値を増やせば出来るよ。 AddForce は http://mevius.5ch.net/test/read.cgi/gamedev/1578720539/203
204: 名前は開発中のものです。 [] 2020/01/23(木) 08:04:53.53 ID:BeWKcfCr AddForce では加える力を決めれるだけで、それで高さ?頂点?を決めれるわけじゃない。 http://mevius.5ch.net/test/read.cgi/gamedev/1578720539/204
205: 名前は開発中のものです。 [sage] 2020/01/23(木) 08:32:54.21 ID:BeWKcfCr あと多分 質問の状況からすると rigidbody.velocity += Vector3.up + 調整値 で、 FixedUpdate() で、物理フレーム毎に調整値をいじる方が望みの動作を得られる気がする。 でも、それが物理挙動かと言われれば違う気がするし、それなら素直に Transform の数値増減でいいじゃんとも思う。 この辺りどうなんだろうね? rigidbody.AddForce だけでまともなゲームのジャンプになるの? http://mevius.5ch.net/test/read.cgi/gamedev/1578720539/205
206: 名前は開発中のものです。 [sage] 2020/01/23(木) 08:43:29.52 ID:sYrsRPW1 ジャンプの仕方が目標みたいだから、rigidbodyを極めてもよし、transformでコントロールしてもよし。 好きな方で。 addforceなら、velocityに、加えてgravity値をコントロールするとか試行錯誤だね。がんばれ。 http://mevius.5ch.net/test/read.cgi/gamedev/1578720539/206
207: 名前は開発中のものです。 [sage] 2020/01/23(木) 09:05:35.69 ID:o31+m3nu キャラクターとかはキネマティックにして物理エンジンに任せずに自分で動かした方が思った通りの動きになるんだよね http://mevius.5ch.net/test/read.cgi/gamedev/1578720539/207
208: 名前は開発中のものです。 [sage] 2020/01/23(木) 10:00:04.83 ID:KLj1RF1a 物理計算サイトが検算するのに捗る 自分でスプレッドシートつくる方が身につくけど http://mevius.5ch.net/test/read.cgi/gamedev/1578720539/208
209: 名前は開発中のものです。 [sage] 2020/01/23(木) 13:04:24.91 ID:rlCEa5FQ >>202 単純にジャンプの速度を上げたいってだけなら、重力を大きくするか、 特定のキャラクターだけそうしたいならRigidbodyのGravityScaleを大きくするとかかな。ただしこれだと落下速度も速くなっちゃうけど。 一時的に物理計算を無視して完全に制御したいなら、transformよりも Rigidbody.MovePositionを使って動かす方がいいかも。 これなら周りのオブジェクトに物理的な影響を与えながら移動できるし、 fixedupdate内で書くことになるので 「普段は物理無視したいけど爆風に巻き込まれた時は物理に従う」 みたいな実装が楽だよ。 http://mevius.5ch.net/test/read.cgi/gamedev/1578720539/209
210: 名前は開発中のものです。 [sage] 2020/01/23(木) 17:48:04.91 ID:9HsMMURI おっぱいも物理エンジンよりも手で揺らした方がイキイキしている気がする http://mevius.5ch.net/test/read.cgi/gamedev/1578720539/210
211: 名前は開発中のものです。 [sage] 2020/01/23(木) 17:51:59.32 ID:sYrsRPW1 それは物理エンジンが…あ、いやなんでもない。 http://mevius.5ch.net/test/read.cgi/gamedev/1578720539/211
212: 名前は開発中のものです。 [sage] 2020/01/23(木) 20:32:46.84 ID:o/nrz+aB AnimationControler みたくステートマシーンをグラフィカルに編集できるアセットってないっすかね? AnimationControler と StateMachineBehaviour がありゃステートマシンでやるようなこと何でもできるじゃないのって思ってたけど、 Time.timeScale=0 したら setTrigger しても状態遷移しないし、 やっぱりステートマシンのすべてを AnimationControler に任せるのは無理があるのかなとか思って。 なければ State パターン でハードコーディングすべきなのかなやっぱり。 http://mevius.5ch.net/test/read.cgi/gamedev/1578720539/212
213: 名前は開発中のものです。 [sage] 2020/01/23(木) 20:40:25.80 ID:o31+m3nu >>212 animator.updateMode = AnimatorUpdateMode.UnscaledTime; http://mevius.5ch.net/test/read.cgi/gamedev/1578720539/213
214: 名前は開発中のものです。 [sage] 2020/01/23(木) 21:43:00.61 ID:o/nrz+aB >>213 うお、そんなオプションが…。解決しました。感謝です。 http://mevius.5ch.net/test/read.cgi/gamedev/1578720539/214
215: 名前は開発中のものです。 [sage] 2020/01/24(金) 04:03:03.22 ID:+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")を書いただけじゃ 取得しなおしてくれないんですよね、、、、 http://mevius.5ch.net/test/read.cgi/gamedev/1578720539/215
216: 名前は開発中のものです。 [] 2020/01/24(金) 07:02:28.39 ID:9g9ZzaxQ バグっぽいと言うのはどこの情報ですか? http://mevius.5ch.net/test/read.cgi/gamedev/1578720539/216
217: 名前は開発中のものです。 [sage] 2020/01/24(金) 07:54:41.99 ID:1mzH9O5r >>215 普通に考えてリスタートの処理の仕方に問題があるかと。 ゲームオーバーで最初に戻るにしても、インプット関数としては、ゲームオーバーしようがしまいが関係ない。なら、リスタートまでに何か影響のある処理を入れてしまっている事が考えられる。 例えば、start()に取得し直しとか書いてるけど、startをまた呼び出してるの?すまん、私はそんな表記はした事ないから異常に見えました。 http://mevius.5ch.net/test/read.cgi/gamedev/1578720539/217
218: 名前は開発中のものです。 [sage] 2020/01/24(金) 12:14:44.83 ID:JiuRt8jn プレイヤーオブジェクトをDestroyしてる説 http://mevius.5ch.net/test/read.cgi/gamedev/1578720539/218
219: 名前は開発中のものです。 [sage] 2020/01/24(金) 16:44:42.21 ID:YxoFqWNA おこなの? http://mevius.5ch.net/test/read.cgi/gamedev/1578720539/219
220: 名前は開発中のものです。 [sage] 2020/01/24(金) 21:18:19.49 ID:lHO70wOG 質問です 編集ソフト間ではテクスチャやマテリアルをFBXに同梱するのは珍しくありませんが、Unity上ではあまり見かけません 単にUnityではFBX内のデータを編集できないから邪魔という理由かなと思っていますが、他にも理由があるのでしょうか? http://mevius.5ch.net/test/read.cgi/gamedev/1578720539/220
221: 名前は開発中のものです。 [sage] 2020/01/24(金) 21:48:57.86 ID:+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")は仕事をしてくれなくなる 状況です。 (で、一度入力を放すと正常になる) http://mevius.5ch.net/test/read.cgi/gamedev/1578720539/221
222: 名前は開発中のものです。 [sage] 2020/01/24(金) 21:50:33.57 ID:+Fsi074W ちなみにプレイヤーが死んだ時、プレイヤー作成時に Input.GetKeyとInput.GetAxisRaw を記載したりはしておりません。 そもそもInput.GetAxisRaw("Horizontal")の入力を阻止することなんて こちらがどうこうできるものでは無いはずなんです で、例えば int x = Input.GetAxisRaw("Horizontal")としてやって、 xに入る値の動きをデバッグして見ていますが 死ぬ前は右が押されている間「1」が入り続けるんですが 死んだあとDestroyされ右キー押し続けている状態でも「0」が入ってきます で、そのあとリスタートするわけですが 死ぬ前から押し続けていた右キー押してる間はずっと0のままなんですよ これはおかしいと思いませんか? http://mevius.5ch.net/test/read.cgi/gamedev/1578720539/222
223: 名前は開発中のものです。 [] 2020/01/24(金) 22:41:41.98 ID:9g9ZzaxQ いやそのスクリプトがデストロイしてるオブジェクトについてたらダメじゃね って話しじゃないか http://mevius.5ch.net/test/read.cgi/gamedev/1578720539/223
224: 名前は開発中のものです。 [sage] 2020/01/24(金) 23:07:02.42 ID:rtAyfksW リスタートを実装しているなら、わざわざDestroyしなくてもいいんでは?と思うけど 仮にUnityの不具合で instaniateされたゲームオブジェクトが継続中のHorizontalを受け付けないのだとしても、Destroyせず最初のプレイヤーのゲームオブジェクトを使い回せばいいんでは http://mevius.5ch.net/test/read.cgi/gamedev/1578720539/224
225: 名前は開発中のものです。 [sage] 2020/01/24(金) 23:07:28.97 ID:+Fsi074W >>223 おっしゃりたいことはわかります。 もしそういう仕様(デストロイしたオブジェクトに書いてた場合は一度放さないと機能しない)、 なら ジャンプをせずに(Input.GetKeyを使わずに) 死んでリスタートした場合は 押しっぱなしのInput.GetAxisRaw("Horizontal")が 開始後そのまま機能してるのがおかしいと思いませんか? 要はジャンプしてから死んでリスタートした場合だけ機能しないんです。 http://mevius.5ch.net/test/read.cgi/gamedev/1578720539/225
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 777 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.022s