Пример #1
0
    void OnCollisionEnter(Collision other)
    {
        AudioSource.PlayClipAtPoint(sound.clip, transform.position);

        Instantiate(brickParticle, transform.position, Quaternion.identity);

        float rnd = Random.Range(-1.0f, 3.0f);

        if (rnd < 0)
        {
            int powerIndex = (int)Random.Range(0.0f, 7.0f);

            switch (powerIndex)
            {
            case 0: power = GameManager.instance.fogPowerDown; break;

            case 1: power = GameManager.instance.gravityPullPowerDown; break;

            case 2: power = GameManager.instance.energyBarrierPowerUp; break;

            case 3: power = GameManager.instance.metalballPowerUp; break;

            case 4: power = GameManager.instance.turretPowerUp; break;

            case 5: power = GameManager.instance.sizeIncreasePowerUp; break;

            case 6: power = GameManager.instance.sizeDecreasePowerDown; break;
            }

            BasicPower bp = Instantiate(power, transform.position, Quaternion.identity).GetComponent <BasicPower>();
            bp.SetDropDirection(transform.position.y <= 0 ? -1 : 1);
        }

        Destroy(gameObject);
    }
Пример #2
0
    public static void Create()
    {
        BasicPower asset = ScriptableObject.CreateInstance <BasicPower> ();

        AssetDatabase.CreateAsset(asset, "Assets/NewWeaponObject.asset");
        AssetDatabase.SaveAssets();
        EditorUtility.FocusProjectWindow();
        Selection.activeObject = asset;
    }
Пример #3
0
    public bool usePower(int powerId, bool surpressError)
    {
        BasicPower power = powerHandler.getPower(powerId);

        if (power == null)
        {
            displayError("Power not found.", surpressError);
            return(false);
        }

        if (!powerHandler.isPowerReady(powerId) && powerId > 0)
        {
            displayError("Power not ready.", surpressError);
            return(false);
        }

        if (power.requiresTarget && target == null)
        {
            displayError("Power requires target.", surpressError);
            return(false);
        }

        if (!power.alwaysTargetSelf)
        {
            if (power.targetType == TARGET_TYPE.OTHERTEAM && target.team == team)
            {
                displayError("Power target not other team.", surpressError);
                return(false);
            }
            else if (power.targetType == TARGET_TYPE.MYTEAM && target.team != team)
            {
                displayError("Power target MY team.", surpressError);
                return(false);
            }

            if (!testDistanceToTarget(power.range))
            {
                displayError("Power target not in range.", surpressError);
                return(false);
            }

            if (power.requiresLineOfSite && !testLineOfSightEnemy())
            {
                displayError("Can't see target.", surpressError);
                return(false);
            }

            CmdUsePower(powerId, target.gameObject, this.gameObject);
        }
        else
        {
            CmdUsePower(powerId, this.gameObject, this.gameObject);
        }

        return(true);
    }
Пример #4
0
 public void initialize(BasicPower payload, TargetableObject target, GameObject owner)
 {
     this.payload = payload;
     this.target  = target;
     this.owner   = owner;
 }
Пример #5
0
 public void initialize(CombatHandler combatHandler, BasicPower power)
 {
     this.power         = power;
     this.combatHandler = combatHandler;
     isInitialized      = true;
 }
Пример #6
0
    void CmdUsePower(int powerId, GameObject targetGameObject, GameObject attacker)
    {
        BasicPower power = powerHandler.getPower(powerId);
        //Debug.Log(this.name + " use power: " + power.weaponname);
        //target
        bool usedPower = true;

        if (power != null)
        {
            TargetableObject target = null;
            if (targetGameObject != null)
            {
                target = targetGameObject.GetComponent <TargetableObject>();
                if (target != null)
                {
                    if (target.isAlive())
                    {
                        //May need to account for lag here.
                        //Test vs location on timestamp. For now leave it.
                        //if(	testDistanceToTarget(power.range) && testLineOfSightEnemy() )
                        //{
                        //check within range?
                        //even for instant, should I make it an object that is applied next frame?
                        if (power.isInstant)
                        {
                            target.health.takeDamage(power.dmg, attacker);
                            usedPower = true;
                        }
                        else
                        {
                            var bullet = (GameObject)Instantiate(
                                power.bullet,
                                firePoint.transform.position,
                                firePoint.transform.rotation);


                            Bullet bulletHandler = bullet.GetComponent <Bullet>();
                            bulletHandler.initialize(Object.Instantiate(power) as BasicPower, target, attacker);
                            NetworkServer.Spawn(bullet);
                            RpcSetBullet(bullet, targetGameObject);

                            MovementHandler movementHandler = bullet.GetComponent <MovementHandler>();
                            movementHandler.moveToTarget(target.transform, bulletHandler.deliverPayload);
                            //if( movementHandler!= null )
                            //{


                            //}
                            //if(!isLocalPlayer)
                            //bullet.GetComponent<MeshRenderer>().material.color = Color.blue;
                        }
                        //}
                    }
                }
            }
            if (usedPower)
            {
                powerHandler.usePower(powerId);
                RpcUsePower(powerId);
            }
            //takeDamage
        }
        //check if power off cooldown?
        //apply

        // Create the Bullet from the Bullet Prefab

        /*var bullet = (GameObject)Instantiate(
         *      bulletPrefab,
         *      bulletSpawn.position,
         *      bulletSpawn.rotation);
         *
         * // Add velocity to the bullet
         * bullet.GetComponent<Rigidbody>().velocity = bullet.transform.forward * 6;
         *
         * if(isLocalPlayer)
         * bullet.GetComponent<MeshRenderer>().material.color = Color.blue;
         *
         * // Spawn the bullet on the Clients
         * NetworkServer.Spawn(bullet);
         *
         * // Destroy the bullet after 2 seconds
         * Destroy(bullet, 2.0f);*/
    }
Пример #7
0
 bool testRange(BasicPower power)
 {
     return(false);
 }