大砲ゲームオブジェクトにつけるスクリプトはどうすればいいでしょうか
大砲ゲームオブジェクトにつけるスクリプトはどうすればいいでしょうか
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 変数に基づいて初期速度を与えることで、弾丸を発射します。