前提
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

バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/08/13 23:39 編集