【ゲームエンジン】Unityなんでも質問スレpart11at GAMEDEV【ゲームエンジン】Unityなんでも質問スレpart11 - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト933:名前は開発中のものです。 23/10/31 16:56:56.38 fBvOIC9I.net プレイヤーと接触したらプレイヤーの向いてる方向に 接触したオブジェクトを飛ばしたいんだけど やり方がわかりません 現状Z軸に真っ直ぐ飛ばすことしかできないです いろんな方向に飛ばすにはどうしたらいいですか? Rayを使ってるんだけどコレ間違ってますか? 934:名前は開発中のものです。 23/10/31 17:21:54.52 JBA754sm.net 向いてる方向取得して同じ方向にAddForceするだけじゃないのか? 935:名前は開発中のものです。 23/10/31 18:33:26.56 fBvOIC9I.net >>930 初心者なのでそれがよくわかってないです 6時の方向からぶつかれば12時に方に 8時の方向からぶつかれば2時の方に飛ばしたいんだけど 伝わってますか? 936:名前は開発中のものです。 23/10/31 18:44:15.71 INIqRQg0.net transform forward 使えばいける 937:名前は開発中のものです。 23/10/31 18:49:45.92 d8ooapVa.net プレイヤーが接触したオブジェクトをプレイヤーの向いている方向に飛ばすためには、プレイヤーの向きを取得し、その向きに力を加えることで実現できます。具体的なコードは以下のようになります void OnCollisionEnter(Collision collision) { // プレイヤーと衝突した場合 if (collision.gameObject.tag == "Player") { // プレイヤーの向きを取得 Vector3 playerDirection = collision.gameObject.transform.forward; // プレイヤーの向きに力を加える GetComponent<Rigidbody>().AddForce(playerDirection * forceMagnitude); } } このコードでは、`OnCollisionEnter`関数を使用してプレイヤーとの衝突を検出し、衝突したオブジェクトにプレイヤーの向き(`transform.forward`)に力を加えています。`forceMagnitude`は力の大きさで、これはあらかじめ適切な値に設定しておく必要があります。 この方法であれば、プレイヤーがどの方向を向いていても、接触したオブジェクトはその方向に飛んでいくはずです。ただし、このコードは基本的なものであり、具体的なゲームの状況や要件によっては調整が必要かもしれません。例えば、力の大きさや、飛ばす方向(水平方向だけ、または上下方向も含む)などを調整することが考えられます。また、オブジェクトが飛ぶ速度や距離も力の大きさやオブジェクトの質量によって変わるため、これらのパラメータも適切に設定する必要があります。具体的な値はテストプレイしながら調整してみてください。 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch