雑記210120

ご!ピクジンです。

ペースを上げると言ったな?アレは嘘だ。
今日は敵に弾当てたら消えるようにしただけです。

弾の攻撃力を決定する処理とか、敵側が弾の攻撃力を参照できるようにしたりと、後々役立ちそうな部分は一応作っといたんですけどね。

一応コードでも貼っつけて誤魔化しとこ。

//弾のスクリプト
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Bullet : MonoBehaviour
{
   Rigidbody2D bulletRigid;
   SpriteRenderer bulletSprite;

   float attack = 1;
   public float Attack
   {
       get { return attack; }
   }

   private void Awake()
   {
       bulletRigid = GetComponent<Rigidbody2D>();
       bulletSprite = GetComponent<SpriteRenderer>();
   }

   private void Update()
   {
       if(transform.position.y > 5.5f)
       {
           bulletRigid.velocity = Vector2.zero;
           Color color = bulletSprite.color;
           color.a = 0;
           bulletSprite.color = color;
           bulletRigid.simulated = false;
       }
   }

   public void BulletSet(float speed, float ATK)
   {
       Color color = bulletSprite.color;
       color.a = 1;
       bulletSprite.color = color;
       bulletRigid.simulated = true;
       bulletRigid.AddForce(Vector2.up * speed, ForceMode2D.Impulse);

       attack = ATK;
   }

   private void OnTriggerEnter2D(Collider2D collision)
   {
       if (collision.tag != "Enemy") return;

       bulletRigid.velocity = Vector2.zero;
       Color color = bulletSprite.color;
       color.a = 0;
       bulletSprite.color = color;
       bulletRigid.simulated = false;
   }
}
//敵のHP管理用スクリプト
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class EnemyHealth : MonoBehaviour
{
   [SerializeField]
   private float enemy_HP = 1;

   private void OnTriggerEnter2D(Collider2D collision)
   {
       if (collision.tag != "bullet") return;

       enemy_HP = Mathf.Clamp
           (enemy_HP - collision.gameObject.GetComponent<Bullet>().Attack
           , 0, 100);

       if(enemy_HP <= 0) Destroy(this.gameObject);
   }
}

弾の攻撃力をプレイヤー経由で変化させることを考慮し、ついでに速度与えたりする処理も弾のスクリプト内でやるようにしました。

//自機の操作に関するスクリプト

void BulletPool(Transform bullet, Rigidbody2D rigid)
   {
       bullet.position = transform.position;

       bullet.gameObject.GetComponent<Bullet>().BulletSet(bulletSpeed, bulletATK);
   }

   void BulletCreate()
   {
       GameObject bullet = Instantiate(Bullet_pre, transform.position, Quaternion.identity);
       bullet.transform.parent = bulletPool.transform;

       bullet.gameObject.GetComponent<Bullet>().BulletSet(bulletSpeed, bulletATK);
   }
//弾のスクリプト
//ここで速度与えたりスプライトを表示したりする
public void BulletSet(float speed, float ATK)
   {
       Color color = bulletSprite.color;
       color.a = 1;
       bulletSprite.color = color;
       bulletRigid.simulated = true;
       bulletRigid.AddForce(Vector2.up * speed, ForceMode2D.Impulse);

       attack = ATK;
   }

書くこと書いたので終わり。
またこんど。

この記事が気に入ったらサポートをしてみませんか?