using UnityEngine;

//////////////////////////////////////////////////////////////////
//【弾丸の移動とゾンビとの当たり判定に使用するクラス】
// 弾丸を移動、ゾンビが影外にいる場合の当たり判定処理、弾丸削除処理
//////////////////////////////////////////////////////////////////
public class BulletController : MonoBehaviour
{
    /////////////////////////////////
    // 【変数の設定】
    /////////////////////////////////

    //【Unity Editorから設定する変数】
    [SerializeField] float direction = -1;  // 弾丸の進行方向
    [SerializeField] SpriteRenderer sRenderer;  // SpriteRendererコンポーネント
    [SerializeField] GameObject pre_Impact;  // インパクト画像Prefab


    /////////////////////////////////
    // 【関数の設定】
    /////////////////////////////////

    //【毎フレームに１度動く関数】
    //（Unityの標準関数）
    void Update()
    {
        // 弾丸が画面外に出た場合、弾丸のゲームオブジェクトを削除
        if (!sRenderer.isVisible) Destroy(gameObject);

        // 弾丸を横方向(左 or 右)に移動
        transform.Translate(direction * 0.05f, 0, 0);
    }


    //【弾丸のコライダーが他のコライダーに当たった場合呼ばれるCollision関数】
    //（Unityの標準関数）
    private void OnCollisionEnter2D(Collision2D collision)
    {
        // 当たった相手のinShadowフラグがfalseの場合
        // (ゾンビにだけCollisionが発生)
        if (!collision.gameObject.GetComponent<EnemyController>().inShadow)
        {
            // 弾丸がゾンビと当たった位置にインパクトのPrefabを生成
            Instantiate(pre_Impact, collision.contacts[0].point, Quaternion.identity);

            // 当たったゾンビを削除
            Destroy(collision.gameObject);
        }

        // 弾丸のゲームオブジェクトを削除(ゾンビをたおせなくても)
        Destroy(gameObject);
    }
}
