[過去ログ] 【ゲームエンジン】Unityなんでも質問スレpart8 (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
436: 2022/10/26(水)01:40 ID:8WC+Jm0M(5/5) AAS
>>431
そうですね 1本完成させてからくるわ (´・ω・`)クソゲーで何が悪い?
437: 2022/10/26(水)11:12 ID:DT/daO77(1) AAS
糞スレ
438: 2022/10/26(水)14:00 ID:b6AX5R9p(1/4) AAS
拡張がないとvscodeでのステップ実行は不可能なんでしょうか?
439
(2): 2022/10/26(水)14:32 ID:b6AX5R9p(2/4) AAS
3段ジャンプ作っています。
初歩的かつ、頭悪いですが、混乱しているので対策を教えてください

問題点:
1回目の押下ではジャンプ出来るが、2回目の押下ではジャンプ出来ない

原因:
2回めの押下でリセット関数が働いて、max_jump_countが3になっていて、case2が発動されないことが原因思われます

コード:
外部リンク:ideone.com

補足:

3段ジャンプ、もっとマシなやり方あるんでしょうか
440
(1): 2022/10/26(水)15:34 ID:mhQKrFwX(1/6) AAS
>>439
色々あるがまず
isHitToGround()関数は正常に機能してるか?
ここで仮に「常にtrueが返るバグがある」とかだと68行目のif文で
チェックされて空中ジャンプに移行しない
それとジャンプのカウントをswitch文で遷移させるのは頭がおかしいぞ
441
(1): 2022/10/26(水)15:48 ID:mhQKrFwX(2/6) AAS
>>440これは違うか

>>439
ジャンプした直後にjumpingCountReset()関数でmax_jump_countを
3に戻すのが悪い
例えばジャンプの上昇中はjumpingCountReset()を呼ばないようにするとかの
方法がある
ジャンプカウントのリセットが必要なのは常にキャラの加工中だからね
442
(1): 2022/10/26(水)15:56 ID:LM/DaEJN(1/3) AAS
え?そこ?・・・つーか、今までのレスのやりとりは何だったの?
もう書き直した「答え」出してって言ってるようなもんじゃんよ・・・
443
(2): 2022/10/26(水)16:29 ID:BRmbUSwY(1) AAS
>>442
指導したい人がやってるんだから粗探しせず、スルーでイイんじゃないの?
444: 2022/10/26(水)16:44 ID:LM/DaEJN(2/3) AAS
>>443
スマネ・・・つい口から出ちまった
変数・代入・分岐・関数・引数・戻値・・・つーかフローやら変数関数の有効範囲の基礎知識どうなってんの?だったので、
・・・以後気を付けます
445
(1): 2022/10/26(水)16:47 ID:gghaiF0A(1) AAS
なんでも質問スレだからな、上の質問はもちろん、質問に対する疑問の声も大歓迎なんだぜ
それが何でも来いってことだぜ
446: 2022/10/26(水)16:50 ID:LM/DaEJN(3/3) AAS
いや・・・俺はもう退散します・・・たぶん俺にはもう必要ないとおもうので>>443の言う通りスルーしますね
447
(2): 2022/10/26(水)17:49 ID:b6AX5R9p(3/4) AAS
>>441
ジャンプした直後にjumpingCountReset関数で3に戻っているのはなぜでしょうか?接地していないから戻っていないはずですが、、、。
あと、ジャンプのカウントはswitch使わないとしたらどう管理するのがセオリーなんでしょうか
448
(1): 2022/10/26(水)17:59 ID:mhQKrFwX(3/6) AAS
>>447
ジャンプした直後もまだキャラクターはちょっとしか動いてない
したがってこのプログラムの接地判定に引っかかる
これは長さが1fのレイを下に伸ばしてる
だから1フレームで1以上上昇しないと接地してる判定になる
そしてカウントが元に戻る羽目になってる
449: 2022/10/26(水)18:00 ID:mhQKrFwX(4/6) AAS
>>447
後者に関しては俺はこのケースではカウンターが0以上ならジャンプできるようにするだけ
450
(1): 2022/10/26(水)18:04 ID:mhQKrFwX(5/6) AAS
ところでカウンターはfloat型ではなくintにした方がいい
基本的にコンピュータは小数を扱うのが苦手で誤差が生まれるからね
451: 2022/10/26(水)18:12 ID:phxiZASO(3/3) AAS
てか計算しなくて状態を持ってればいいだけのような
452
(1): 2022/10/26(水)19:33 ID:b6AX5R9p(4/4) AAS
>>448
な、なるほど
そこは気づかなかったです

キャラのコリジョンから都合よく1pxだけ伸ばすなんてこのしないですもんね。

ベロシティが+値の場合を上昇とみなして見ますが。他のやり方はありますか?
453: 2022/10/26(水)19:53 ID:mhQKrFwX(6/6) AAS
>>452
タイマーを使う方法がある
ジャンプ時にタイマーをセットして接地判定を許すタイミングで接地判定可能フラグを
オンにする
454: 2022/10/27(木)00:20 ID:sgaEp23q(1) AAS
>>450
これで、switch文も解決しましたー!とか言ってきたら流石に白目なる
455: 2022/10/27(木)09:14 ID:gBSo1FaA(1/6) AAS
isHitToGround内で下降中のみレイを飛ばすように対策しましたが、2回目の押下でカウントが3になっちゃいますね
3に戻す部分はリセット関数しかないので、底が悪さしているのは確実なのですが

もうわからないです
外部リンク:ideone.com
456: 2022/10/27(木)09:50 ID:8Wq4UzIH(1) AAS
Mathf.Sign(rb.velocity.y) == 1


Mathf.Sign(rb.velocity.y) == -1

じゃないの?
457
(2): 2022/10/27(木)10:10 ID:n9F1DQle(1/3) AAS
適当に書いてみた

とりあえず状態外に見えないようにして
使えるかどうかだけ確認するのが楽だし
衝突は2DならcontactFillterでいい

外部リンク:ideone.com

俺は本職でもないただの無職だが
このくらいは自前で書けるように勉強しないと
ミニゲームすらままならないゾ
458
(1): 2022/10/27(木)10:27 ID:Mb1soW9V(1) AAS
まぁバグは本人が意識出来てる動作と実際の計算が異なる事で発生する
人為的なミスなので死角からハリセンが飛んでくるのに近い
外部リンク:ideone.com

velocityはプロットすると分かるが収束するまで結構暴れるからOnCollisionEnter2D一択だろうね
459: 2022/10/27(木)11:09 ID:El3K99WE(1) AAS
>>457
>このくらいは自前で書けるように勉強しないと

正にこれだと思うわ
460: 2022/10/27(木)11:25 ID:Ccb5Bjo8(1) AAS
もうわからないです
と言ってるからここが終着点なんだろう
461: 2022/10/27(木)11:34 ID:bQ7WgbrX(1/2) AAS
どうでもいいけど要件整理って大事だと思う
462
(1): 弟子 2022/10/27(木)11:39 ID:gXi2+Oha(1/5) AAS
久しぶりだな

まずさシンプルにいこう、逆に考えてみるか
void Update()
{
moveFunction();
if (Input.GetKeyDown(KeyCode.Space))
{
rb.AddForce(rb.transform.up * 5.0f ,ForceMode2D.Impulse);
jumpingFunction();
//print(max_jump_count);
//print(isHitToGround());
}
}
private void moveFunction()
{
//操作方向
float x = Input.GetAxis("Horizontal");
float y = Input.GetAxis("Vertical");
//左右移動
rb.velocity = new Vector2(x * 10, rb.velocity.y);
}
画像リンク


これでスペース押すと、ジャンプ繰り返すんだけど
3回目で押せなくすればいいかなと
463: 2022/10/27(木)11:39 ID:1clBHIjw(1) AAS
デバッガで追えばjumpingFunctionが2にしたのを同一フレームで
jumpingCountResetが3に戻してるのが見える
つまりisHitToGroundが期待した通りに動作してない
464: 2022/10/27(木)11:49 ID:gXi2+Oha(2/5) AAS
>>462
ちなみに、jumpingFunctionはコメントにしてある。

でこのあとは、3回目という判定と、床に着いたらクリアをつくればいいかと
465: 弟子 2022/10/27(木)11:57 ID:gXi2+Oha(3/5) AAS
まぁこんなんで悩むのは時間の無駄だから答え

moveFunction();
if (Input.GetKeyDown(KeyCode.Space))
{
if (jumpCount > 2) return;
rb.AddForce(rb.transform.up * 5.0f ,ForceMode2D.Impulse);
jumpCount++;
//jumpingFunction();
//print(max_jump_count);
//print(isHitToGround());
}
}
private void moveFunction()
{
//操作方向
float x = Input.GetAxis("Horizontal");
float y = Input.GetAxis("Vertical");
//左右移動
rb.velocity = new Vector2(x * 10, rb.velocity.y);
}
private void OnCollisionEnter2D(Collision2D collision)
{
jumpCount = 0;
}
1-
あと 537 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ

ぬこの手 ぬこTOP 0.022s