弾を真っすぐ飛ばしたいのですが、普通の状態で弾を飛ばすと真っすぐ飛ぶのですがジャンプ中だと斜めに飛ぶようになります。
どのような修正を加えればいかなる時でも真っすぐ飛ぶようになるのでしょうか?
**ジャンプの処理** if (isJump == false && gameClear == false && WaitStop == false) { // スペースでジャンプ。 if (jumpCount < MAX_JUMP_COUNT && (Input.GetKeyDown("space") || Input.GetKeyDown("joystick button 0"))) { isJump = true; anim.SetBool("Charge", false); anim.SetTrigger("Jump"); } } float velY = rigidbody2D.velocity.y; bool isJumping = velY > 0.1f ? true : false; bool isFalling = velY < -0.1f ? true : false; anim.SetBool("isJumping", isJumping); anim.SetBool("isFalling", isFalling); if (isJump) { // 速度をクリアした2回目のジャンプも1回目と同じ挙動にする。 rigidbody2D.velocity = Vector2.zero; // ジャンプさせる。 rigidbody2D.AddForce(Vector2.up * force); // ジャンプ回数をカウント。 jumpCount++; // ジャンプを許可する。 isJump = false; // anim.SetBool("Jump", true); } コード
**銃を撃つanimationにこの処理を追加** void Bullet() //弾を生成 { Instantiate(bullet, transform.position + new Vector3(0f, 1.2f, 0f), transform.rotation); } コード
**生成された弾のプレハブに追加されているスクリプト** using UnityEngine; using System.Collections; public class BulletScript : MonoBehaviour { private GameObject player; private int speed = 10; void Start() { player = GameObject.FindWithTag("UnityChan"); //ユニティちゃんオブジェクトを取得 Rigidbody2D rigidbody2D = GetComponent<Rigidbody2D>(); //rigidbody2Dコンポーネントを取得 //ユニティちゃんの向いている向きに弾を飛ばす rigidbody2D.velocity = new Vector2(speed * player.transform.localScale.x, 0); //画像の向きをユニティちゃんに合わせる Vector2 temp = transform.localScale; temp.x = player.transform.localScale.x; transform.localScale = temp; //5秒後に消滅 Destroy(gameObject, 5); } //********** 開始 **********// void OnTriggerEnter2D(Collider2D col) { if (col.gameObject.tag == "Enemy") //Enemyに衝突すれば弾削除 { Destroy(gameObject); } } private void OnCollisionEnter2D(Collision2D col) { if (col.gameObject.tag == "Enemy")//Enemyに衝突すれば弾削除 { Destroy(gameObject); } } //********** 終了 **********// } コード
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/11/21 02:05