40代ゲーム制作初心者の手記

40代でゲーム制作に挑む無謀なプロジェクトです。とりあえずUnityでやってみます。

大砲ゲームオブジェクトにつけるスクリプトはどうすればいいでしょうか

大砲ゲームオブジェクトにつけるスクリプトはどうすればいいでしょうか

 

Unity で大砲ゲーム オブジェクトに使用できるサンプル スクリプトを次に示します。

csharp
Copy code
using System.Collections;
using UnityEngine;

public class CannonScript : MonoBehaviour
{
    public GameObject bulletPrefab;
    public float bulletSpeed = 10.0f;
    public float bulletSize = 1.0f;
    public float maxChargeTime = 10.0f;
    public float maxBulletSizeTime = 10.0f;

    private float chargeTime = 0.0f;
    private float bulletSizeTime = 0.0f;
    private float charge = 0.0f;
    private bool isCharging = false;
    private bool isFiring = false;

    void Update()
    {
        if (isCharging)
        {
            chargeTime += Time.deltaTime;
            charge = Mathf.Clamp01(chargeTime / maxChargeTime);

            if (Input.GetMouseButtonUp(0) || chargeTime >= maxChargeTime)
            {
                isCharging = false;
                isFiring = true;
            }
        }
        else if (isFiring)
        {
            bulletSizeTime += Time.deltaTime;

            if (Input.GetMouseButton(0) && bulletSizeTime < maxBulletSizeTime)
            {
                bulletSize = Mathf.Clamp01(bulletSizeTime / maxBulletSizeTime);
            }
            else
            {
                FireBullet();
                isFiring = false;
                chargeTime = 0.0f;
                bulletSizeTime = 0.0f;
                charge = 0.0f;
                bulletSize = 1.0f;
            }
        }

        if (Input.GetMouseButtonDown(0))
        {
            isCharging = true;
        }
    }

    void FireBullet()
    {
        GameObject bullet = Instantiate(bulletPrefab, transform.position, transform.rotation);
        bullet.transform.localScale *= bulletSize;
        Rigidbody2D rb = bullet.GetComponent<Rigidbody2D>();
        rb.velocity = transform.right * bulletSpeed * charge;
    }
}

このスクリプトは、Update メソッドを使用して、弾丸の充電、発射、スケーリングを処理します。 Input.GetMouseButtonDown メソッドと Input.GetMouseButtonUp メソッドを使用して、プレイヤーが大砲をなでるタイミングと止めるタイミングを検出します。 charge 変数は充電された電力量を追跡し、 bulletSize 変数は弾丸の大きさを追跡します。 プレーヤーが充電を停止すると、スクリプトは弾丸プレハブをインスタンス化し、bulletSize 変数に基づいてそのスケールを設定し、charge 変数と bulletSpeed 変数に基づいて初期速度を与えることで、弾丸を発射します。