| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- using Base.Common;
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- public enum BulletType
- {
- Single = 0,//单体目标,触发后即销毁
- Penetrate = 1,//穿透,可击中多个目标
- Bomb = 2,//击中目标后爆炸
- }
- public class Bullet : MonoBehaviour
- {
- public Character owner;
- public Rigidbody rb;
- public List<BeHitTrigger> trigedObjs;
- public int damage;
- public Vector3 force;
- public BulletType bulletType;
- public bool isGetTarget = false;
- public float speed;
- private void Awake()
- {
- //owner = GetComponentInParent<Character>();
- rb = GetComponent<Rigidbody>();
- }
- public void BeShoot(Character own, Vector3 shootPos, Vector3 dir, int dmg, Vector3 fc)
- {
- transform.position = shootPos;
- transform.right = -dir;
- gameObject.SetActive(true);
- isGetTarget = false;
- owner = own;
- damage = dmg;
- force = fc;
- rb.velocity = dir * speed;
- }
- private void OnTriggerEnter(Collider other)
- {
- if (isGetTarget)
- {
- return;
- }
- BeHitTrigger hitTrigger = other.GetComponent<BeHitTrigger>();
- if (hitTrigger != null)
- {
- bool triged = false;
- for (int i = 0; i < trigedObjs.Count; i++)
- {
- if (trigedObjs[i] == hitTrigger)
- {
- triged = true;
- break;
- }
- }
- if (!triged)
- {
- trigedObjs.Add(hitTrigger);
- if (Util.CheckCanHit(owner.tag, hitTrigger.owner.tag) && !hitTrigger.owner.isDie)
- {
- switch (bulletType)
- {
- case BulletType.Single:
- hitTrigger.BeHit(damage, force);
- isGetTarget = true;
- gameObject.SetActive(false);
- break;
- case BulletType.Penetrate:
- hitTrigger.BeHit(damage, force);
- break;
- case BulletType.Bomb:
- break;
- default:
- break;
- }
- }
- }
- }
- }
- private void OnEnable()
- {
- trigedObjs.Clear();
- }
- }
|