0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[Unity]追尾してくる弾を作る方法[角度変更なし][2D]

Last updated at Posted at 2024-01-28

初めに

今回はUnityで自機弾を作る方法を紹介します。Translateを使って角度を変えずに作るので注意してください

自機弾を作る

それでは早速作っていきましょう。
三平方の定理を使います。三平方の定理とはa²+b² = c²というもので、直角三角形の二辺がわかるともう一つの辺もわかるというものです。これを使って弾と追尾する物の距離を求めて、xとyをどれだけ移動させればいいか求めます
段落テキスト.png

aの辺は隣辺,bの辺は対辺,cの辺は斜辺といいます

弾のコードはこんな感じです

弾のコード
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEditor.Build;
using UnityEngine;

public class BarrageLittleBlueController : MonoBehaviour
{
    GameObject player; //追尾される側のオブジェクトを定義
    float abjacentLength; //隣辺の長さ
    float oppositeLength; //対辺の長さ
    float obliqueLength; //斜辺の長さ

    void Start()
    {
        this.player = GameObject.Find("追尾するオブジェクトの名前");
    }
    void Update()
    {
        abjacentLength = player.transform.position.x - transform.position.x; //追尾する物のX座標から弾のX座標を引いて隣辺の長さに代入します。
        
        oppositeLength = player.transform.position.y - transform.position.y; //追尾する物のY座標から弾のY座標を引いて対辺の長さに代入します。

        obliqueLength = Mathf.Sqrt(abjacentLength * abjacentLength + oppositeLength * oppositeLength);
        //隣辺の長さと対辺の長さの合計の平方根を求めて斜辺の長さに代入します。Mathf.Sqrt()は平方根を求める関数です。
        transform.Translate(abjacentLength * 1.0f / obliqueLength, oppositeLength * 1.0f / obliqueLength, 0);
        //斜辺の長さ分の進みたい距離を隣辺と対辺にそれぞれかけて、xとyをどれだけ移動させればいいか求めます。
    }
}

1.0fのところには弾のスピードを入れてください。

これで追尾する弾を作ることができます

終わりに

追尾してくる弾はシューティングゲームでよく使われがちです。
これを使ってあなたのゲームをもっと楽しくしてみてください。

0
1
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?