public virtual void OnActivate()
        {
            shot = GameObj.GetComponent <ShotBehavior>();

            GameObj.EventParentChanged += GameObj_EventParentChanged;

            if (GameObj.Parent != null)
            {
                controller = GameObj.Parent.GetComponent <PlayerController>();
            }
        }
示例#2
0
 // Update is called once per frame
 void Update()
 {
     Object[] objs = GameObject.FindObjectsOfType(typeof(ShotBehavior));
     for (int i = 0; i < objs.Length; i++)
     {
         ShotBehavior laser = objs[i] as ShotBehavior;
         if (Vector3.Distance(gameObject.transform.position, laser.transform.position) > .9f)
         {
             continue;
         }
         GameObject laserObj = laser.gameObject;
         GameObject.Destroy(laser);
         Rigidbody rig = laserObj.AddComponent <Rigidbody>();
         rig.useGravity = true;
     }
 }
示例#3
0
    // Update is called once per frame
    void Update()
    {
        if (cooldown != 0)
        {
            cooldown--;
        }

        if (Input.GetMouseButton(0) && cooldown == 0 && ammobar.value > 0)
        {
            if (chargePercent >= windupReq)
            {
                cooldown = heat;

                ammo          -= ammocost;
                ammobar.value -= ammocost;



                for (int i = 0; i < bulletNumber; i++)
                {
                    Vector3    inaccurate = Random.insideUnitSphere * inaccuracy;
                    Quaternion inacc      = Quaternion.Euler(inaccurate);
                    GameObject bullet     = Instantiate(shot, transform.position, transform.rotation * inacc) as GameObject;
                    bullet.GetComponent <Rigidbody>().AddForce((transform.forward + inaccurate) * fireForce);
                    bullet.GetComponent <Transform>().localScale *= size;
                    ShotBehavior bulletProps = bullet.GetComponent <ShotBehavior>();

                    bulletProps.lifeTime = lifetime;
                    bulletProps.damage   = damage;
                    bulletProps.piercing = piercing;
                    if (!audio.isPlaying)
                    {
                        audio.Play();
                    }
                }
            }
            else
            {
                chargePercent++;
            }
        }
        else if (chargePercent > 0)
        {
            chargePercent--;
        }
    }
示例#4
0
    public virtual bool Shoot(Transform t)
    {
        bool hasShot = false;

        if (!_onCooldown)
        {
            SetRandomShootingTime();
            RecoilCalculation(t);
            GameObject shot = Instantiate(shotPrefab, nozzle.position, nozzle.rotation);
            Destroy(shot, weaponInfo.shotLifeSpan);
            _onCooldown = true;
            ShotBehavior sb = shot.GetComponent <ShotBehavior>();
            sb.movementSpeed     = weaponInfo.projectileSpeed;
            sb.collisionDistance = weaponInfo.collisionDistance;
            sb.damage            = weaponInfo.damage;
            hasShot = true;
        }
        return(hasShot);
    }
 public void OnActivate()
 {
     targeter = GameObj.GetComponent <Targeter>();
     shot     = GameObj.GetComponent <ShotBehavior>();
 }