🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

解決済

1回答

693閲覧

3Dで重力落下とめり込みを修正するスクリプトの書き方が知りたい

退会済みユーザー

退会済みユーザー

総合スコア0

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

0クリップ

投稿2019/09/15 16:30

onTriggerEnterを使って重力をゼロにしていますがこれだと足元がのめり込んでしまい上手く作れませんこの現象を修正するにはどうしたいいのでしょうか?

using System; using System.Collections; using System.Collections.Generic; using UnityEngine; public class Player : MonoBehaviour { private Rigidbody rb; private Vector3 v; private const float walk_speed = 100.0f; // Use this for initialization void Start () { rb = GetComponent<Rigidbody>(); v = new Vector3(); Physics.gravity = new Vector3(0, -200.8f, 0); } // Update is called once per frame void Update () { if(Input.GetKey(KeyCode.UpArrow)) { v.z += walk_speed; } else if (Input.GetKey(KeyCode.DownArrow)) { v.z -= walk_speed; } else if (Input.GetKey(KeyCode.LeftArrow)) { v.x -= walk_speed; } else if (Input.GetKey(KeyCode.RightArrow)) { v.x += walk_speed; } else { v.x = 0; v.z = 0; } rb.velocity = v * Time.deltaTime; } private void OnTriggerEnter() { Physics.gravity = Vector3.zero; } }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Physics.gravity = new Vector3(0, -200.8f, 0);

って重力重いな...
地球の20倍以上あるぞ...

っという話は別にいいとして、
こんな感じで、velocityを戻せばいいのでは?

C#

1private void OnTriggerEnter() 2{ 3 Physics.gravity = Vector3.zero; 4 //positionのスペルに自信ないわ。後で調べて... 5 rb.position -= rb.velocity; 6 rb.velocity = new Vector3(0, 0, 0); 7}

投稿2019/09/16 01:28

stdio

総合スコア3307

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/09/16 12:07

初歩的な質問ですがnewとは確保する意味ですがまたここでnewすると処理はどうなるのでしょうか?
退会済みユーザー

退会済みユーザー

2019/09/16 12:15

質問ですが提示通りコードを編集しても足元が地面に埋もれてしますのですがどうすればいいのでしょうか?
stdio

2019/09/17 00:39

newに関しての質問は、同じTeratailで同様の質問をしている方がいらっしゃいました。 https://teratail.com/questions/161647 2つ目は単純に重力強すぎるんじゃない? 地球の重力は9.807程度なんで、200.8なんて太陽レベルの重力ありますよ。 それか単純にIsTriggerにチェック入っていないのかも知れません。 https://www.sejuku.net/blog/58775 下記URLの「衝突はさせずにプログラムを呼び出したい!」を参考にして下さい。 ワザと逆の事言ってますが....
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問