子弹特效

This commit is contained in:
GL 2024-12-20 16:28:28 +08:00
parent 5a778abdbc
commit 4d4a9e5b0b

View File

@ -13,6 +13,17 @@ public enum BulletType
Spraying //原地喷射 Spraying //原地喷射
} }
public enum BulletAttributes
{
Not,
Gold,//金木水火土
Wood,
Water,
Fire,
Earth
}
public enum BulletMoveType public enum BulletMoveType
{/// <summary> {/// <summary>
@ -40,6 +51,7 @@ public class BulletData
[Header("子弹飞行速度")] public float BulletSpeed = 5f; [Header("子弹飞行速度")] public float BulletSpeed = 5f;
[Header("子弹攻击冷却")] public float BulletAttackCooldown = 1f; [Header("子弹攻击冷却")] public float BulletAttackCooldown = 1f;
[Header("子弹伤害")] public float attack = 10; [Header("子弹伤害")] public float attack = 10;
public BulletData() public BulletData()
{ {
@ -66,9 +78,14 @@ public class Bullet : MonoBehaviour
[Header("子弹发射角色对象")] public Role role; [Header("子弹发射角色对象")] public Role role;
[Header("子弹发射范围对象")] public Attack attackObj; [Header("子弹发射范围对象")] public Attack attackObj;
[Header("子弹类型")] public BulletType myBulletType; [Header("子弹类型")] public BulletType myBulletType;
[Header("子弹属性")] public BulletAttributes bulletAttributes;
[Header("攻击类型")] public BulletMoveType bulletMoveType; [Header("攻击类型")] public BulletMoveType bulletMoveType;
[Header("子弹数据")] public BulletData bulletData = new BulletData(); [Header("子弹数据")] public BulletData bulletData = new BulletData();
[Header("销毁时间,默认是10f")] public float BulletDeadTimer=10f; [Header("销毁时间,默认是10f")] public float BulletDeadTimer=10f;
[Header("子弹动画")] public Animator animator;
[Header("子弹移动参数")] public bool IsMove=true;
[Header("子弹碰撞体")] public Collider2D Collider2D;
[Header("子弹特效预制体")] public GameObject effectPre;
private float timer = 0; private float timer = 0;
private void Update() private void Update()
{ {
@ -76,6 +93,8 @@ public class Bullet : MonoBehaviour
{ {
//更具子弹的移动方式来移动 //更具子弹的移动方式来移动
case BulletMoveType.PeerToPeer: case BulletMoveType.PeerToPeer:
if (IsMove)
{
this.gameObject.transform.Translate(Vector3.up * Time.deltaTime * bulletData.BulletSpeed); this.gameObject.transform.Translate(Vector3.up * Time.deltaTime * bulletData.BulletSpeed);
timer += Time.deltaTime; timer += Time.deltaTime;
if (timer > BulletDeadTimer) if (timer > BulletDeadTimer)
@ -84,6 +103,8 @@ public class Bullet : MonoBehaviour
Debug.Log("对象已成功移除。当前列表数量:" + attackObj.bulltes.Count); Debug.Log("对象已成功移除。当前列表数量:" + attackObj.bulltes.Count);
Destroy(this.gameObject); Destroy(this.gameObject);
} }
}
break; break;
case BulletMoveType.PointToDirection: case BulletMoveType.PointToDirection:
break; break;
@ -114,11 +135,35 @@ public class Bullet : MonoBehaviour
attackObj.bulltes.Remove(this.gameObject); attackObj.bulltes.Remove(this.gameObject);
if (myBulletType!=BulletType.Spraying) if (myBulletType!=BulletType.Spraying)
{
if (animator == null)
{ {
attackObj.bulltes.Remove(this.gameObject); attackObj.bulltes.Remove(this.gameObject);
//Debug.Log("对象已成功移除。当前列表数量:" + attackObj.bulltes.Count);
Destroy(this.gameObject); Destroy(this.gameObject);
} }
else
{
IsMove = false;//停止移动
Collider2D.enabled = false;//关闭碰撞体
transform.position = collision.transform.position;
animator.SetTrigger("Boom");
Debug.Log("爆炸动画+++++++++++++++++++++++++++++++++");
}
}
if (bulletAttributes==BulletAttributes.Fire)
{
if (effectPre!=null)
{
Instantiate(effectPre, collision.transform).transform.position=new Vector2(collision.transform.position.x, collision.transform.position.y+0.2f);
Debug.Log("创建火焰");
}
}
} }
} }
} }
@ -154,6 +199,12 @@ public class Bullet : MonoBehaviour
} }
} }
public void DesBullet()
{
attackObj.bulltes.Remove(this.gameObject);
Destroy(this.gameObject);
}
private void OnTriggerExit2D(Collider2D collision) private void OnTriggerExit2D(Collider2D collision)
{ {
@ -166,11 +217,18 @@ public class Bullet : MonoBehaviour
//Debug.Log("对象已成功移除。当前列表数量:" + attackObj.bulltes.Count); //Debug.Log("对象已成功移除。当前列表数量:" + attackObj.bulltes.Count);
if (myBulletType != BulletType.Spraying) if (myBulletType != BulletType.Spraying)
{
if (animator==null)
{ {
attackObj.bulltes.Remove(this.gameObject); attackObj.bulltes.Remove(this.gameObject);
Destroy(this.gameObject); Destroy(this.gameObject);
} }
}
} }
} }
} }