Ejemplo n.º 1
0
 public BaseShoot(BulletsSpawner bulletSpawner, Transform spawn, IBulletBehaviour bulletBehaviour, Sprite spr)
 {
     _spawn         = spawn;
     _bulletSpawner = bulletSpawner;
     _bB            = bulletBehaviour;
     _spr           = spr;
 }
Ejemplo n.º 2
0
 public LaserShoot(BulletsSpawner bulletSpawner, Transform spawn, IBulletBehaviour bulletBehaviour, Sprite spr)
 {
     _spawn         = spawn;
     _bulletSpawner = bulletSpawner;
     _bB            = bulletBehaviour;
     _spr           = spr;
     canShoot       = true;
 }
Ejemplo n.º 3
0
 public AutomaticShoot(BulletsSpawner bulletSpawner, Transform spawnRight, Transform spawnLeft, IBulletBehaviour bulletBehaviour, Sprite spr)
 {
     _spawnRight    = spawnRight;
     _spawnLeft     = spawnLeft;
     _bulletSpawner = bulletSpawner;
     _bB            = bulletBehaviour;
     _spr           = spr;
 }
Ejemplo n.º 4
0
 public void SetBehavior(string behavior)
 {
     if (!_behaviors.ContainsKey(behavior))
     {
         return;
     }
     _bullet = _behaviors[behavior];
     _bullet.Reset();
 }
Ejemplo n.º 5
0
    public void Activate()
    {
        _behaviors = new Dictionary <string, IBulletBehaviour>
        {
            { BulletBehavior.Normal, new NormalBullet(normalBulletSpeed, normalBulletLifeSpan, this) },
            { BulletBehavior.Lazer, new LazerBullet(lazerBulletLifeSpan, this) },
            { BulletBehavior.Bomb, new BombBullet(bombBulletLifeSpan, this, bombLayerMask) }
        };

        _bullet            = _behaviors[BulletBehavior.Normal];
        transform.position = Vector3.zero;
    }
Ejemplo n.º 6
0
 void Awake()
 {
     bulletBehaviour = new BaseBullet();
     debugHit        = 0;
 }
Ejemplo n.º 7
0
        public void CheckRaycast(ref Transform transform, ref WorldMovement Movement, ref IBulletBehaviour bulletBehaviour)
        {
            OutOfRange = false;

            if ((RayDistance > 0f) && !IsHit && !IsShowHit)
            {
                transform.position = Movement.Position;
                OutOfRange         = Vector3.Distance(Movement.Position, InitPosition) > ShotRange;
            }

            if (IsHit || OutOfRange || IsShowHit)
            {
                bulletBehaviour.BulletFinish();
            }
            else
            {
                mRay    = bulletBehaviour.Ray;
                mRayHit = bulletBehaviour.RayHit;
                bool isHit = Utils.Raycast(Movement.Position, Movement.MoveDirection, out mRay, out mRayHit, RayDistance, RayMask);
                if (isHit)
                {
                    bulletBehaviour.HitTarget = mRayHit.transform.gameObject;
                    GameObject hitTarget = bulletBehaviour.HitTarget;

                    int hitLayer = hitTarget.layer;
                    int id       = hitTarget.GetInstanceID();
                    DoHit(hitLayer, id, mRayHit.point, Movement.MoveDirection);
                    bulletBehaviour?.AfterDoHit(this);
                    if (!IsShowHit)
                    {
                        IsShowHit = true;
                        CommonBulletChecker?.CacheBulletData(this);//处理命中后的操作
                    }
                }
            }
        }