質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
87.20%
C#

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

受付中

unityでRigidBody2D.VelocityとAddForceの処理を同時に使いたい。

10key3
10key3

総合スコア1

C#

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

1回答

0リアクション

0クリップ

177閲覧

投稿2022/08/13 12:23

編集2022/08/13 12:24

前提

unityでRigidBody2D.VelocityとAddForceの処理を並行して使いたい。

実現したいこと

ボタンを押した際時、任意の2Dオブジェクトを横、縦、斜めに移動させたい。また斜め方向では放物線を描くように斜めに動かしたい。その際、ボタンを一回押すだけで物体が着地までするようにしたい。

発生している問題・エラーメッセージ

現在横、縦移動をRigidBody2D.Velocityを書き換えて行っており、斜めの移動をAddForceで行おうとしたところエラーメッセージは出ないが処理が行われなくなった。Velocityの処理をコメントアウトすると、AddForceでの処理が正常に行われる。

エラーメッセージ

該当のソースコード

using System.Collections; using System.Collections.Generic; using UnityEngine; public class test : MonoBehaviour { //インスペクターで値を設定 public float speed; public float gravity; private Rigidbody2D rb = null; void Start() { rb = GetComponent<Rigidbody2D>(); } void Update() { float xSpeed = 0.0f; float ySpeed = -gravity; //放物線に飛んでいく処理 if ("上矢印キーを押したら") //if文の中の処理は省略しています。 { Vector2 forceDirection = new Vector2(1.0f, 1.0f); // 上の向きに加わる力の大きさを定義 float forceMagnitude = 10f; // 向きと大きさからSphereに加わる力を計算する Vector2 force = forceMagnitude * forceDirection; rb.AddForce(force, ForceMode2D.Impulse); } //横移動の処理 if ("横矢印キーを押したら") //上に同じく。 xSpeed = speed; } rb.velocity = new Vector2(xSpeed, ySpeed); //この一文をコメントアウトしないと、上矢印キーを押したときの処理が行われない。 } }

試したこと

Velocityを使って斜め移動ができないかと試し、
(中略)
if (Input.GetKeyDown("up"))
{
rb.velocity = new Vector2(rb.velocity.x, upForce);
}
のような処理を見つけた (参考:https://www.f-sp.com/entry/2016/08/16/211214) ものの、矢印キーを離したときにそのまま垂直落下してしまう。キーを一回押すだけで着地までしてほしい。

補足情報(FW/ツールのバージョンなど)

unity2020.3.19f1

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

C#

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