Inheritance: Projectile
Example #1
0
    // fonction appelée lorsque l'arme de la tour est activée
    public override void Shoot()
    {
        if (Time.time - timeLastShoot > frequency)
        {
            isShooting = true;

            timeLastShoot = Time.time;

            if (projectilePoolReady.Count > 0)
            {
                go = (GameObject)projectilePoolReady[0];
                go.SetActive(true);

                bullet           = go.GetComponent(typeof(ProjectileGun)) as ProjectileGun;
                bullet.isExpired = false;
                bullet.shooter   = shootFromTransform;
                bullet.target    = null;

                bullet.Shoot();

                projectilePoolReady.RemoveAt(0);
                projectilePoolActive.Add(go);
            }
        }
        else
        {
            isShooting = false;
        }
    }
Example #2
0
 public override void TurnOn()
 {
     base.TurnOn();
     Rbody.velocity = Velocity;
     _gun           = Vehicle.GetComponentInChildren <ProjectileGun>();
     _gun.Init(_reloadTime, _shellSpeed, _rotSpeed);
 }
Example #3
0
    public void aumentarBalas()
    {
        GameObject    gun       = _getSelectedGun();
        ProjectileGun scriptGun = gun.GetComponent <ProjectileGun>();

        scriptGun.moreBullets();
    }
Example #4
0
    private void Initialize()
    {
        CurrentState = State.Idle;
        _avatarCtrl  = AvatarController.GetInstance();
        _avatar      = _avatarCtrl.Avatar;
        _avatar.OnSuccsefulEating += () => { Score += 1; };
        _avatar.OnDeath           += DeathHandler;
        _buildCtrl = BuildController.GetInstance();
        _buildCtrl.SetMeteorController();
        _taskCtrl                 = TaskController.GetInstance();
        _taskCtrl.Avatar          = _avatar;
        _taskCtrl.TaskCompleted  += (ITask x) => Debug.Log(x);
        DuringDistanceTask.Avatar = _avatar.transform;
        _pursuitCtrl              = PursuitController.GetInstance();
        _pursuitCtrl.AvatarTf     = _avatar.transform;
        _pursuitCtrl.Catched     += CatchedHandler;
        _idGen        = new IDGenerator();
        _stuff        = new SortedDictionary <int, GameObject>();
        _mainProvider = new MultiGeneratorProvider(_stuff, _pursuitCtrl, _idGen);
        _mainProvider.SetIDGenerator(_idGen);
        _firstCarPos  = new Vector2(0, 1);
        _firstCarDesc = new CarDescriptor(_firstCarPos, 0, 1);
        _playStats    = new PlayStatistics();
        _globStats    = GlobalStatistics.GetInstance();
//
        Vehicle.Avatar = _avatar;
        ProjectileGun.SetAvatar(_avatar);
        _isInitialized = true;
    }
 // Sets the projectile.
 public void SetupProjectile(float plt, float ps, ProjectileGun pg, float d, int s)
 {
     projectileLifeTime  = plt;
     projectileSpeed     = ps;
     projectileGunScript = pg;
     damage    = d;
     shooterID = s;
 }
Example #6
0
    // fonction de mise à jour
    public void FixedUpdate()
    {
        for (int i = 0; i < projectilePoolActive.Count; ++i)
        {
            go = (GameObject)projectilePoolActive[i];

            bullet = go.GetComponent(typeof(ProjectileGun)) as ProjectileGun;

            if (bullet.isActive)
            {
                if (bullet.isExpired)
                {
                    bullet.isActive = false;

                    go.SetActive(false);

                    projectilePoolActive.RemoveAt(i);
                    projectilePoolReady.Add(go);
                }
                else if (bullet.hasCollided)
                {
                    previousTransform = bullet.transform;
                    previousTransform.Translate(previousTransformOffset, Space.Self);

                    raycastRay.origin    = previousTransform.position;
                    raycastRay.direction = bullet.direction;

                    if (Physics.Raycast(raycastRay, out raycastHit) && !bullet.hasBounced)
                    {
                        bullet.hasBounced = true;

                        impactPoint  = raycastHit.point;
                        impactNormal = raycastHit.normal;

                        impactIncidence = Vector3.Angle(raycastRay.direction, impactNormal);

                        reflectionQuaternion =
                            Quaternion.LookRotation(
                                Vector3.Reflect(
                                    raycastRay.direction,
                                    raycastHit.normal
                                    )
                                );

                        bullet.transform.position = impactPoint;
                        bullet.transform.rotation = reflectionQuaternion;

                        print("<gun impact:" + impactPoint + " incidence:" + impactIncidence + ">");
                        Debug.DrawRay(raycastRay.origin, raycastRay.direction, Color.grey, 1, true);
                    }
                }
            }
        }
    }
Example #7
0
    // fonction de mise à jour
    public void FixedUpdate()
    {
        for(int i = 0; i < projectilePoolActive.Count; i++)
        {
            go = (GameObject)projectilePoolActive[i];

            bullet = go.GetComponent(typeof(ProjectileGun)) as ProjectileGun;

            if(bullet.isActive)
            {
                if(bullet.isExpired)
                {
                    bullet.isActive = false;

                    go.SetActive(false);

                    projectilePoolActive.RemoveAt(i);
                    projectilePoolReady.Add(go);
                }
                else if(bullet.hasCollided)
                {
                    previousTransform = bullet.transform;
                    previousTransform.Translate(previousTransformOffset, Space.Self);

                    raycastRay.origin =    previousTransform.position;
                    raycastRay.direction = bullet.direction;

                    if(Physics.Raycast(raycastRay, out raycastHit) && !bullet.hasBounced)
                    {
                        bullet.hasBounced = true;

                        impactPoint  = raycastHit.point;
                        impactNormal = raycastHit.normal;

                        impactIncidence = Vector3.Angle(raycastRay.direction, impactNormal);

                        reflectionQuaternion =
                            Quaternion.LookRotation(
                            Vector3.Reflect(
                                raycastRay.direction,
                                raycastHit.normal
                            )
                        );

                        bullet.transform.position = impactPoint;
                        bullet.transform.rotation = reflectionQuaternion;

                        print("<gun impact:" + impactPoint + " incidence:" + impactIncidence + ">");
                        Debug.DrawRay(raycastRay.origin, raycastRay.direction, Color.grey, 1, true);
                    }
                }
            }
        }
    }
Example #8
0
    void Start()
    {
        v = GetComponent <Vehicle>();
        if (avatar != null)
        {
            Vehicle.Avatar = avatar;
            ProjectileGun.SetAvatar(avatar);
            Projectile.Avatar = avatar;
        }
        switch (behav)
        {
        case Behs.Simpe:
            v.InitBehaviour(new Vehicle.SimpleCar(speed));
            break;

        case Behs.Police:
            v.InitBehaviour(new Vehicle.PoliceCar(speed, sideSpeed, scanRadius));
            break;

        case Behs.Wobbling:
            v.InitBehaviour(new Vehicle.WobblingCar(speed, halfPeriod, 2.5f, true));
            break;

        case Behs.Slide:
            v.InitBehaviour(new Vehicle.SlidingCar(speed, minAngle, maxAngle, sminSideSpeed, smaxSideSpeed));
            break;

        case Behs.Military:
            v.InitBehaviour(new Vehicle.MilitaryCar(speed, 5, 2, 30, 3.5f));
            break;

        default:
            Debug.LogWarning("something wrong");
            break;
        }
        v.InitSize(blockType, blockCount);
    }
Example #9
0
 private void Start()
 {
     gun = GetComponent <ProjectileGun>();
     InvokeRepeating("FindPlayerShip", 0, .5f);
 }
    private void Start()
    {
        ProjectileGun cannon = GameManager.Instance.dome.gun as ProjectileGun;

        cannon.shotPrefab = gravitylessCannonBallPrefab;
    }
Example #11
0
    public void AddGadget(MonoBehaviour gadget)
    {
        if (gadgets.Count < maxGadgets)
        {
            switch (gadget.GetType().ToString())
            {
            case "JetpackMovement":
                JetpackMovement gadgetJM    = gadget.GetComponent <JetpackMovement>();
                JetpackMovement newGadgetJM = gameObject.AddComponent <JetpackMovement>();
                newGadgetJM.upwardMultiplier    = gadgetJM.upwardMultiplier;
                newGadgetJM.gadgetPreviewPrefab = gadgetJM.gadgetPreviewPrefab;
                gadgets.Add(newGadgetJM);
                newGadgetJM.enabled = false;
                break;

            case "ProjectileGun":
                ProjectileGun gadgetPG    = gadget.GetComponent <ProjectileGun>();
                ProjectileGun newGadgetPG = gameObject.AddComponent <ProjectileGun>();
                newGadgetPG.cooldown            = gadgetPG.cooldown;
                newGadgetPG.projectilePrefab    = gadgetPG.projectilePrefab;
                newGadgetPG.gadgetPreviewPrefab = gadgetPG.gadgetPreviewPrefab;
                newGadgetPG.angleMultiplier     = gadgetPG.angleMultiplier;
                newGadgetPG.pointerModel        = gadgetPG.pointerModel;
                gadgets.Add(newGadgetPG);
                newGadgetPG.enabled = false;
                break;

            case "RaycastGun":
                RaycastGun gadgetRG    = gadget.GetComponent <RaycastGun>();
                RaycastGun newGadgetRG = gameObject.AddComponent <RaycastGun>();
                newGadgetRG.cooldown             = gadgetRG.cooldown;
                newGadgetRG.damage               = gadgetRG.damage;
                newGadgetRG.impactForce          = gadgetRG.impactForce;
                newGadgetRG.range                = gadgetRG.range;
                newGadgetRG.impactParticleSystem = gadgetRG.impactParticleSystem;
                newGadgetRG.gadgetPreviewPrefab  = gadgetRG.gadgetPreviewPrefab;
                newGadgetRG.angleMultiplier      = gadgetRG.angleMultiplier;
                newGadgetRG.pointerModel         = GetComponent <GadgetReferences>().raycastGunPointer;
                gadgets.Add(newGadgetRG);
                newGadgetRG.enabled = false;
                break;

            case "Shield":
                Shield gadgetSh    = gadget.GetComponent <Shield>();
                Shield newGadgetSh = gameObject.AddComponent <Shield>();
                newGadgetSh.maxEnergy                 = gadgetSh.maxEnergy;
                newGadgetSh.startWithFullEnergy       = gadgetSh.startWithFullEnergy;
                newGadgetSh.loseEnergyOnHit           = gadgetSh.loseEnergyOnHit;
                newGadgetSh.loseEnergyOverTime        = gadgetSh.loseEnergyOverTime;
                newGadgetSh.energyRegeneration        = gadgetSh.energyRegeneration;
                newGadgetSh.shieldObject              = GetComponent <GadgetReferences>().shield;
                newGadgetSh.shieldActiveMaterial      = gadgetSh.shieldActiveMaterial;
                newGadgetSh.shieldDeactivatedMaterial = gadgetSh.shieldDeactivatedMaterial;
                newGadgetSh.gadgetPreviewPrefab       = gadgetSh.gadgetPreviewPrefab;
                break;

            default:
                Debug.LogError("Gadget not listed, unable to add");
                break;
            }
            Initialize();
        }
    }
Example #12
0
    // fonction appelée lorsque l'arme de la tour est activée
    public override void Shoot()
    {
        if(Time.time - timeLastShoot > frequency)
        {
            isShooting = true;

            timeLastShoot = Time.time;

            if(projectilePoolReady.Count > 0)
            {
                go = (GameObject) projectilePoolReady[0];
                go.SetActive(true);

                bullet = go.GetComponent(typeof(ProjectileGun)) as ProjectileGun;
                bullet.isExpired = false;
                bullet.shooter = shootFromTransform;
                bullet.target = null;

                bullet.Shoot();

                projectilePoolReady.RemoveAt(0);
                projectilePoolActive.Add(go);
            }
        }
        else
        {
            isShooting = false;
        }
    }