Inheritance: MonoBehaviour
コード例 #1
0
    public void CmdChargedAttack(Vector3 _target)
    {
        AudioManager.instance.PlayChargedFireballReleaseSFX();
#if UNITY_ANDROID
        if (SettingsData.IsVibrationOn())
        {
            Handheld.Vibrate();
        }
#endif

        GameObject ProjectileInstianted = (GameObject)Instantiate(Projectile, this.transform.position, Quaternion.identity);
        ProjectileInstianted.GetComponent <ProjectileScript>().MovementSpeed += energy.AmtenergyCharge * 50;
        //debug.text = ProjectileInstianted.GetComponent<ProjectileScript>().MovementSpeed.ToString();

        ProjectileScript projScript = ProjectileInstianted.GetComponent <ProjectileScript>();
        player = GetComponent <Player>();
        //projScript.owner = player; // this.gameObject; // player.gameObject;
        projScript.owner = this.gameObject;

        //projScript.Target = (Target.transform.position - this.transform.position).normalized;
        //projScript.gameObject.transform.position = this.transform.position;

        projScript.Target = _target;
        projScript.gameObject.transform.position = dragonMouth.transform.position;

        projScript.Vel = projScript.Target;

        NetworkServer.SpawnWithClientAuthority(ProjectileInstianted, connectionToClient);
        test++;
    }
コード例 #2
0
    void FireProjectile()
    {
        GameObject           projectileSpawnObject = gameObject.transform.Find("ProjectileSpawn").gameObject;
        ProjectileParameters projectileParams      = gunParameters.projectileParameters;

        if (projectileSpawnObject != null)
        {
            Vector3    spawn      = projectileSpawnObject.transform.position;
            GameObject projectile = Instantiate(projectileParams.GetProjectile(), spawn, Quaternion.Euler(Camera.main.transform.forward));
            projectile.transform.rotation = Quaternion.Euler(Camera.main.transform.forward);
            Rigidbody rb = projectile.gameObject.GetComponent <Rigidbody>();

            if (rb != null)
            {
                rb.AddForce(transform.forward * projectileParams.speed);
                ProjectileScript projectileScript = projectile.GetComponent <ProjectileScript>();
                if (projectileScript != null)
                {
                    projectileScript.SetParameters(projectileParams.type, projectileParams.fuse, projectileParams.detonationForce, projectileParams.radius, projectileParams.damage);
                }
                else
                {
                    Destroy(projectile);
                    Debug.Log("No projectile script attached, destroying projectile");
                }
            }
        }
    }
コード例 #3
0
    public static WeaponParameters CreateWeaponSetInFolder(string folderPath, string weaponName, WeaponScript linkedWeapon)
    {
        WeaponParameters     weaponParams     = ScriptableObject.CreateInstance <WeaponParameters>();
        ShootParameters      shootParams      = ScriptableObject.CreateInstance <ShootParameters>();
        ProjectileParameters projectileParams = ScriptableObject.CreateInstance <ProjectileParameters>();

        weaponParams.weaponName = weaponName;

        weaponParams.SetWeaponPrefab(linkedWeapon);

        weaponParams.SetShootParameters(shootParams);

        ProjectileScript baseProjectilePrefab = AssetDatabase.LoadAssetAtPath <ProjectileScript>("Assets/Weapons/BaseProjectile.prefab");

        shootParams.SetProjectilePrefab(baseProjectilePrefab);

        shootParams.SetProjectileParameters(projectileParams);

        string weaponPath     = AssetDatabase.GenerateUniqueAssetPath(folderPath + "/" + weaponName + " Weapon Parameters.asset");
        string shootPath      = AssetDatabase.GenerateUniqueAssetPath(folderPath + "/" + weaponName + " Shoot Parameters.asset");
        string projectilePath = AssetDatabase.GenerateUniqueAssetPath(folderPath + "/" + weaponName + " Projectiles Parameters.asset");

        AssetDatabase.CreateAsset(weaponParams, weaponPath);
        AssetDatabase.CreateAsset(shootParams, shootPath);
        AssetDatabase.CreateAsset(projectileParams, projectilePath);

        EditorUtility.SetDirty(weaponParams);
        EditorUtility.SetDirty(shootParams);
        EditorUtility.SetDirty(projectileParams);

        return(weaponParams);
    }
コード例 #4
0
    private IEnumerator AttackRoutine()
    {
        //For trail renderer
        if (player.inControl)
        {
            unCorruptedTrail.enabled = true;
        }
        else
        {
            corruptedTrail.enabled = true;
        }
        canShoot = false;
        weaponAnim.SetTrigger("Attack");
        //ammoEmitter.localEulerAngles = new Vector3(0f, 0f, Random.Range(-50f, 50f));
        ProjectileScript ammo = Instantiate(bullet, ammoEmitter.position, ammoEmitter.localRotation).GetComponent <ProjectileScript>();

        ammo.Setup(ammoEmitter.up, GetMouseAngle, bulletSpeed);
        audioManager.RandomizeSfx(shootSfx);
        yield return(new WaitForSeconds(fireRate));

        canShoot = true;
        //For trail renderer
        if (player.inControl)
        {
            unCorruptedTrail.enabled = false;
        }
        else
        {
            corruptedTrail.enabled = false;
        }
    }
コード例 #5
0
    ProjectileScript InstantiateEnemyProjectile(int dir)
    {
        ProjectileScript newProjectile = Instantiate(enemyProjectilePrefab, new Vector3(transform.position.x + dir, transform.position.y), Quaternion.identity).GetComponent <ProjectileScript>();

        newProjectile.setDiretction(dir);
        return(newProjectile);
    }
コード例 #6
0
ファイル: GrenadeRifle.cs プロジェクト: kidundead/ow
        public override void Fire(float deltaTime)
        {
            if (Time.time - lastShootTime < attackFrenquency || bulletCount == 0)
            {
                return;
            }

            Vector3 tempTargetPoint = cameraComponent.ScreenToWorldPoint(new Vector3(gameCamera.ReticlePosition.x, Screen.height - gameCamera.ReticlePosition.y, 50));

            Ray        ray = new Ray(cameraTransform.position, (tempTargetPoint - cameraTransform.position));
            RaycastHit hit;

            if (Physics.Raycast(ray, out hit, 1000, 1 << PhysicsLayer.ENEMY | 1 << PhysicsLayer.WALL | 1 << PhysicsLayer.FLOOR))
            {
                aimTarget = hit.point;
            }
            else
            {
                aimTarget = cameraTransform.TransformPoint(0, 0, 1000);
            }
            aimTarget.y *= 2;
            Vector3          dir    = (aimTarget - rightGun.position).normalized;
            GameObject       proObj = Object.Instantiate(projectile, rightGun.position + Vector3.up * 0.5f + dir * 0.1f, Quaternion.LookRotation(-dir)) as GameObject;
            ProjectileScript p      = proObj.GetComponent <ProjectileScript>();

            p.dir           = dir;
            p.flySpeed      = 50.0f;
            p.explodeRadius = 5.0f;
            p.hitForce      = hitForce;
            p.GunType       = WeaponType.GrenadeRifle;

            lastShootTime = Time.time;
            //bulletCount--;
            bulletCount = Mathf.Clamp(bulletCount, 0, maxCapacity);
        }
コード例 #7
0
ファイル: Sniper.cs プロジェクト: kidundead/ow
        public override void Fire(float deltaTime)
        {
            foreach (NearestEnemyInfo info in nearestEnemyInfoList)
            {
                if (info.transform != null)
                {
                    Vector3          dir    = (info.transform.position - rightGun.position).normalized;
                    GameObject       proObj = Object.Instantiate(projectile, rightGun.position + Vector3.up, Quaternion.LookRotation(-dir)) as GameObject;
                    ProjectileScript p      = proObj.GetComponent <ProjectileScript>();
                    p.dir             = dir;
                    p.life            = 10.0f;
                    p.damage          = damage;
                    p.flySpeed        = flySpeed;
                    p.hitForce        = hitForce;
                    p.targetTransform = info.transform;
                    p.GunType         = WeaponType.Sniper;
                    p.explodeRadius   = range;
                    lastShootTime     = Time.time;
                    sbulletCount--;
                    sbulletCount = Mathf.Clamp(sbulletCount, 0, maxCapacity);
                }
            }
            nearestEnemyInfoList.Clear();

            locked = false;
        }
コード例 #8
0
    // Update is called once per frame
    void Update()
    {
        if (null != myRepeater && null != myObject && myLastCycle < myWaves)
        {
            for (; myLastCycle <= myRepeater.Cycle(); myLastCycle++)
            {
                for (float i = 0f; i < myRadius * 5f; i++)
                {
                    ProjectileScript projectileScript = GlobalScript.New(
                        "Prefabs/Projectiles/Icicle",
                        transform.position + Vector3.up * myHeight + new Vector3(Random.Range(-1f, 1f), Random.Range(-1f, 1f), Random.Range(-1f, 1f)).normalized *myRadius,
                        Quaternion.identity
                        ).GetComponent <ProjectileScript>();

                    projectileScript.myDeleteOnUnit = true;

                    projectileScript.myMessage = myMessage;

                    projectileScript.myClocker = new Clocker(3f);
                }
            }
        }
        else
        {
            Destroy(gameObject);
        }
    }
コード例 #9
0
    public override float Affect(Message message, float input)
    {
        if (null == myGameObject)
        {
            return(input);
        }

        Vector3 position = message.mySubject.myPosition;

        Vector3 destination = message.myObject.myPosition;

        Vector3 difference = destination - position;

        GameObject gameObject = Instantiate(
            myGameObject,
            Vector3.Lerp(position, destination, .8f / difference.magnitude) + Vector3.up * myHeight,
            Quaternion.LookRotation(difference)) as GameObject;

        gameObject.name = myGameObject.name;

        //creating a new projectile
        ProjectileScript projectileScript = gameObject.GetComponent <ProjectileScript>();

        projectileScript.myMessage = message;

        //add forse
        gameObject.GetComponent <Rigidbody>().AddForce(myForce * difference.normalized);

        return(input);
    }
コード例 #10
0
 public void Fire(int localScaleFlipFactor)
 {
     if (!NormalShotOnCD() && gameObject.activeSelf && bullets > 0 && !Reloading())
     {
         normalShotTimer = normalShotCD;
         GameObject       shot    = Instantiate(laserShot);
         ProjectileScript pScript = shot.GetComponent <ProjectileScript>();
         pScript.hitRate = hitRate;
         if (Random.value <= critRate)
         {
             pScript.damage = NormalDistribution.CalculateNormalDistRandom(damage * 2, deviation * 2);
             pScript.isCrit = true;
         }
         else
         {
             pScript.damage = NormalDistribution.CalculateNormalDistRandom(damage, deviation);
         }
         ApplyUpgrades(pScript);
         shot.transform.position = transform.position + new Vector3(0.0001f * localScaleFlipFactor - localScaleFlipFactor * 0.3f, 0, 0);
         pScript.SetFlipFactor(localScaleFlipFactor);
         bullets--;
         if (bullets == 0)
         {
             Reload();
         }
     }
 }
コード例 #11
0
    void getEffectNames()
    {
        ProjectileScript projectileScript = effectScript.projectiles[effectScript.currentProjectile].GetComponent <ProjectileScript>();

        projectileParticleName = projectileScript.projectileParticle.name;
        impactParticleName     = projectileScript.impactParticle.name;
    }
コード例 #12
0
ファイル: Snake.cs プロジェクト: akil03/bx
    public void FireFreeze()
    {
        GameObject go;

        if (PhotonNetwork.inRoom)
        {
            int val = 0;
            val = (AccountDetails.instance.playerData.freeze);
            go  = PhotonNetwork.Instantiate("Particles/" + FreezeParticle.name, transform.position, transform.rotation, 0, new object[] { val });
        }
        else
        {
            go = Instantiate(FreezeParticle);
            go.transform.position = transform.position;
            ProjectileScript projectile = go.GetComponent <ProjectileScript>();
            projectile.level = AccountDetails.instance.playerData.freeze;
            if (isBot)
            {
                projectile.Launch(InGameGUI.instance.userSnake);
            }
            else
            {
                projectile.Launch(InGameGUI.instance.opponentSnake);
            }
        }
    }
コード例 #13
0
    public void InstanceProjectile(bool isContinuous, Vector3 attackVector)
    {
        if (conUsing > 0)
        {
            // 투사체를 생성
            GameObject temp = ObjectPullManager.Instance.GetInstanceByName(projectileName);

            // 발사
            if (temp != null)
            {
                if (isContinuous)
                {
                    conContinuousShootingCount++;
                }

                ProjectileScript projectile = temp.GetComponent <ProjectileScript>();
                projectile.Init(muzzle.position, attackVector, isProjectilePenetrating, damage, distance);
            }

            // 총구 이펙트
            muzzleFlash.Emit(1);

            // 총구 반동으로 인한 화면 덜림
            SystemManager.Instance.CameraShake("Shooting", 0.05f, 0.1f * shakeMagnitude, 0.08f * shakeMagnitude);

            // UI 남은 사용 횟수 수정
            UsingWeapon();
        }
    }
コード例 #14
0
//	void PlayerControl(){
//
//		float controllerVertical = Input.GetAxis (input.vertical);
//		float controllerHorizontal = Input.GetAxis (input.horizontal);
//
//		float horizontalPos = transform.position.x + controllerHorizontal * Time.deltaTime * currentSpeed;
//		float verticalPos = transform.position.z + controllerVertical * Time.deltaTime * currentSpeed;
//
//		Debug.Log (controllerHorizontal + " - " + controllerVertical);
//
//
//
//
//		transform.position = new Vector3 (horizontalPos, transform.position.y, verticalPos);
//
////		Vector3 movement = new Vector3 (controllerHorizontal, 0f, controllerVertical);
////		rb.AddForce (movement * currentSpeed * Time.deltaTime * 10f, ForceMode.Impulse);
//
//		float playerRotation = Util.remapRange (Input.GetAxis (input.rStick), -1, 1, maxRotationLeft, maxRotationRight);
//		if (transform.eulerAngles.y <= maxRotationRight && transform.eulerAngles.y >= maxRotationLeft) {
//			//			transform.Rotate (0f, turnAngle, 0f);
//			transform.eulerAngles = new Vector3 (transform.eulerAngles.x, playerRotation, transform.eulerAngles.z);
//		} else {
//			transform.eulerAngles = new Vector3 (transform.eulerAngles.x, defaultRotation, transform.eulerAngles.z);
//		}
//
//	}

    public void PlayerAction()
    {
        Debug.Log("Maybe bullet count issue?");

        //If bullets fired are less than the max bullet amount, allow firing

        if (bullets.Count < bulletsMax)
        {
            Debug.Log("Reached here");

            if (!hasFired)
            {
                //Creates projectile from prefab and sets its Velocity and which player fired it. Also adds it to a list for bullet amount check
                GameObject       projectileInstance = Instantiate(prefab, key.attackPoints[key.attackIndex] + transform.forward * 2f, Quaternion.Euler(transform.eulerAngles.x, transform.eulerAngles.y, transform.eulerAngles.z));
                ProjectileScript ps = projectileInstance.GetComponent <ProjectileScript> ();

                ps.initialVelocity = transform.forward * 20f;

                ps.player = this;
                ps.pNum   = playerNum;
                bullets.Add(projectileInstance);

//				key.attackIndex++;
                hasFired = true;
            }
        }
    }
コード例 #15
0
    public override void Execute(CombatMiniatureProperties _properties, GameObject _user, EntityStatus _userStatus, Transform _shotOrigin)
    {
        playerScript = PlayerScript.Instance;

        SpellCard _tempSpell = _properties.gameObject.GetComponent <SpellVisuals>().spell;

        if (objectPooler == null)
        {
            objectPooler = ObjectPooler.Instance;
        }

        ProjectileScript _pScript = objectPooler.SpawnFromPool(projectile.name, _shotOrigin.position, Quaternion.Euler(0, 0, 90), _user.transform, projectile).GetComponent <ProjectileScript>();

        _pScript.damageDealt = _properties.power;

        if (_userStatus.directionFacing == Facing.Left)
        {
            _pScript.speed = System.Math.Abs(_pScript.speed) * -1;
        }
        else if (_userStatus.directionFacing == Facing.Right)
        {
            _pScript.speed = System.Math.Abs(_pScript.speed);
        }


        if (_tempSpell.exileOnUse == false)
        {
            _properties.combatMenu.MoveCardToDestination(_tempSpell, CardDestination.Combat, CardDestination.Graveyard);
        }
        else
        {
            _properties.combatMenu.MoveCardToDestination(_tempSpell, CardDestination.Combat, CardDestination.Exile);
        }
        _properties.cardHolder.RemoveFirst();
    }
コード例 #16
0
ファイル: Unit.cs プロジェクト: VDCuddles/NV1Scripts
    public void HandleDamage(Collider co)
    {
        if (!IsDead())
        {
            if (Time.time > damageTimeStamp)
            {
                ProjectileScript projGo = co.GetComponentInParent <ProjectileScript>();
                SetHealth(GetHealth() - projGo.GetDamage());
                damageTimeStamp = Time.time + damageIFrameRate;
                if (GetComponent <AudioSource>().clip != hurt)
                {
                    GetComponent <AudioSource>().clip = hurt;
                }
                GetComponent <AudioSource>().PlayOneShot(hurt);

                //blood spatter
                Vector3    position = new Vector3(transform.position.x, transform.position.y + gameObject.GetComponent <BoxCollider>().bounds.extents.y *1.5f);
                GameObject blood    = Instantiate(hurtEffect, position, Quaternion.identity, GameObject.Find("Environment").transform);
                blood.name = hurtEffect.name;
                if (co && co.GetComponentInParent <ProjectileScript>().GetParent().transform.position.x > transform.position.x)
                {
                    blood.GetComponent <SpriteRenderer>().flipX = true;
                }
                if (co && co.transform.parent.gameObject.name == "blankmelee" || co && co.transform.parent.gameObject.name == "Playerblankmelee")
                {
                    blood.GetComponent <SpriteRenderer>().flipX = !blood.GetComponent <SpriteRenderer>().flipX;
                }

                Destroy(blood, hurtAnimDuration);
                StartCoroutine(LeaveBloodstain(co, blood.GetComponent <SpriteRenderer>().flipX));
                HandleDeath();
            }
        }
    }
コード例 #17
0
        public virtual GameObject SpawnProjectile(Vector3 pos, float angle)
        {
            GameObject       g    = Instantiate(projectilePref, GetBarrelPos(), Quaternion.identity);
            ProjectileScript proj = g.GetComponent <ProjectileScript>();

            return(g);
        }
コード例 #18
0
    // Update is called once per frame
    void Update()
    {
        bool slowDown = false;         // Whether the soldier should slow down if it encounters another unity

        // We check through every object that can be shot
        foreach (GameObject shootable in Flags.shootables)
        {
            // Check that the shootable is valid and within range
            if (shootable != null && Vector3.Distance(shootable.transform.position, transform.position) <= range)
            {
                // Ensure that neither object is being held by the player
                if (!GetComponent <MouseMoveable>() && !shootable.GetComponent <MouseMoveable>())
                {
                    Flags shootableFlags = shootable.GetComponent <Flags>();

                    // We check to ensure the two objects aren't on the same team
                    if (shootableFlags.alliance != flags.alliance)
                    {
                        // Check to see if the object is ready to attack again
                        if (nextAttack < Time.time)
                        {
                            // Check if the soldier does not use projectiles (bullets)
                            if (projectile == null)
                            {
                                shootableFlags.TakeDamage(damagePerShot, gameObject);                                 // We damage the enemy and tell them this object did it
                            }
                            // If there is a projectile
                            else
                            {
                                GameObject proj = Instantiate(projectile, transform.position, Quaternion.identity);                                        // Create the projectile
                                proj.GetComponent <Rigidbody2D>().velocity = Vector3.Normalize(shootable.transform.position - transform.position) * 15.0f; // Shoot the projectile towards the enemy
                                ProjectileScript projScript = proj.GetComponent <ProjectileScript>();                                                      // Store the projectile's script
                                projScript.alliance = flags.alliance;                                                                                      // Set the alliance of the projectile
                                projScript.owner    = gameObject;                                                                                          // Set the owner of the projectile
                                projScript.damage   = damagePerShot;                                                                                       // Set the damage of the projectile
                            }
                            nextAttack = Time.time + shotCooldown;                                                                                         // We tell the object when it can shoot again
                        }
                        slowDown = true;                                                                                                                   // The object should slow down
                        break;                                                                                                                             // We can only shoot one enemy at once
                    }
                }
            }
        }

        // We check to see if the object moves on rails
        if (railScript != null)
        {
            // We check to see if the object needs to be slowed down, and that it hasn't already been slowed down
            if (slowDown && railScript.speedMultiplier == 1.0f)
            {
                railScript.speedMultiplier = 0.4f;                 // We slow down the object
            }
            // We check to see if the object no longer needs to slow down and is currently slowed down
            else if (!slowDown && railScript.speedMultiplier == 0.4f)
            {
                railScript.speedMultiplier = 1.0f;                 // We return the object back to normal speed
            }
        }
    }
コード例 #19
0
    public void FireProjectile(bool isFiringRight)
    {
        if (Time.time > shootRateTimeStamp && (!unit.IsDead()) && isLoaded)
        {
            //projectile instatiation
            Vector3    projPosition       = new Vector3(transform.position.x + (isFiringRight ? posOffsetX : -posOffsetX), transform.position.y + posOffsetY, transform.position.z);
            GameObject projectileInstance = Instantiate(projectilePrefab, projPosition, Quaternion.identity, GameObject.Find("Projectiles").transform);
            projectileInstance.name = projectilePrefab.name;
            projectileInstance.GetComponent <ProjectileScript>().SetParent(gameObject);
            ProjectileScript projectileMovement = projectileInstance.GetComponent <ProjectileScript>();
            projectileMovement.FaceAndExpire(isFiringRight);
            shootRateTimeStamp = Time.time + shootRate;

            //cast animation
            if (castAnim)
            {
                GameObject casts = Instantiate(castAnim, projPosition, Quaternion.identity);
                casts.name = castAnim.name;
                casts.GetComponentInChildren <CastMovement>().DefineParent(gameObject);
                SpriteRenderer castsR = casts.GetComponentInChildren <SpriteRenderer>();
                castsR.flipX = !isFiringRight ? castsR.flipX = true : false;
                Destroy(casts, castAnimLength);
                if (weaponscript)
                {
                    if (weaponscript.GetNeedsReload())
                    {
                        isLoaded = false;
                    }
                }
            }
        }
    }
コード例 #20
0
 protected virtual void moveTowardsTarget()
 {
     if (smart)
     {
         //GetFlakList();
         ProjectileScript threat  = findProjectileInRange();
         FlakScript       threat2 = findFlakInRange();
         if (threat != null || threat2 != null)
         {
             smartAvoidance(threat, threat2);
         }
         else
         {
             transform.position = Vector2.MoveTowards(transform.position, targetedPosition, moveSpeed * Time.deltaTime * GetLevAndEngineAceel());
             pointTowardsTarget(targetedPosition);
         }
     }
     else
     {
         if (targetLocked)
         {
             transform.position = Vector2.MoveTowards(transform.position, targetedShip.transform.position, moveSpeed * Time.deltaTime * GetLevAndEngineAceel());
             pointTowardsTarget(targetedShip.transform.position);
         }
         else
         {
             transform.position = Vector2.MoveTowards(transform.position, targetedPosition, moveSpeed * Time.deltaTime * GetLevAndEngineAceel());
             pointTowardsTarget(targetedPosition);
         }
     }
 }
コード例 #21
0
 private void ApplyUpgrades(ProjectileScript pScript)
 {
     foreach (UpgradeScript upgrade in gems)
     {
         upgrade.UpgradeProjectile(pScript);
     }
 }
コード例 #22
0
 void  smartAvoidance(ProjectileScript threat, FlakScript threat2)
 {
     if (threat2 == null)
     {
         aroundMissile(threat);
     }
     else
     {
         if (threat != null)
         {
             if (Vector2.Distance(threat.transform.position, transform.position) < Vector2.Distance(threat2.transform.position, transform.position))
             {
                 aroundMissile(threat);
             }
             else
             {
                 aroundFlak(threat2);
             }
         }
         else
         {
             aroundFlak(threat2);
         }
     }
 }
コード例 #23
0
ファイル: ThrowProjectile.cs プロジェクト: Ylla-/TotemQuest
    public void ThrowFireball(int dmg)
    {
        // Create a new shot
        Transform fireballTransform;

        if (controller.totem == 0)          //If Normal
        {
            fireballTransform = ((GameObject)Instantiate(Fireball)).transform;
        }
        else if (controller.totem == 1)             //If Rabbit
        {
            fireballTransform = ((GameObject)Instantiate(Rabbit_Fireball)).transform;
        }
        else if (controller.totem == 2)             //If Mole
        {
            fireballTransform = ((GameObject)Instantiate(Mole_Fireball)).transform;
        }
        else             //If Mantis
        {
            fireballTransform = ((GameObject)Instantiate(Mantis_Fireball)).transform;
        }

        //Assign Damage
        ProjectileScript shot = fireballTransform.gameObject.GetComponent <ProjectileScript> ();

        shot.Damage = dmg;

        // Assign position and direction
        //fireballTransform.position = transform.position;
        fireballTransform.position = new Vector3(transform.position.x, transform.position.y, -0.2f);
        shot.facingRight           = controller.facingRight;
    }
コード例 #24
0
    //Create the projectile. Used by PlayerShipBehaviour too
    internal void CreateProjectile()
    {
        if (workingProjectileFireCooldown <= 0)                       //if projectile can be fired
        {
            Rigidbody2D shipRigid = GetComponent <Rigidbody2D>();     //used for getting current ship position

            GameObject newProjectile = Instantiate(projectileObject); //creates a new object, initially at 0,0

            Rigidbody2D projectileRigid = newProjectile.GetComponent <Rigidbody2D>();
            //set position + rotation of the projectile to that of the ship
            //newProjectile.transform.SetPositionAndRotation(shipRigid.transform.position, new Quaternion());
            projectileRigid.transform.position = shipRigid.transform.position; //without transform. it spawns at 0,0
            projectileRigid.transform.rotation = shipRigid.transform.rotation;

            ConstantForce2D projectileForce = newProjectile.GetComponent <ConstantForce2D>();
            projectileForce.enabled = true;

            newProjectile.SetActive(true);

            ProjectileScript projectileScript = newProjectile.GetComponent <ProjectileScript>();
            projectileScript.damage       = projectileDamage;       //sets the damage of the projectile
            projectileScript.ownerShip    = gameObject;             //sets the owner's ship to this
            workingProjectileFireCooldown = projectileFireCooldown; //increases the cooldown to the maximum
        }
    }
コード例 #25
0
ファイル: BowScript.cs プロジェクト: Makiah/Exploxels
    void ShootArrow()
    {
        GameObject playerObject = CurrentLevelVariableManagement.GetPlayerReference();

        float preHeading = attachedCharacterInput.GetActualClass().GetFacingDirection() == 1 ? 0 : 180;

        //Apparently there is some issue with the bow's position when attached to the player object, because it is always (0, 0, 0).  This fixes it.
        GameObject instantiatedArrow = (GameObject)(Instantiate(arrow, attachedCharacterInput.GetActualClass().gameObject.transform.position + new Vector3(1.2f, 0, 0) * attachedCharacterInput.GetActualClass().GetFacingDirection(), Quaternion.identity));

        ProjectileScript instantiatedArrowScript = instantiatedArrow.GetComponent <ProjectileScript> ();

        Vector3 positionToFireToward;
        float   accuracy;

        if (attackPlayer)
        {
            positionToFireToward = playerObject.transform.position;
            accuracy             = 30;
        }
        else
        {
            Vector3 shootDirection;
            shootDirection       = Input.mousePosition;
            shootDirection.z     = 0.0f;
            shootDirection       = Camera.main.ScreenToWorldPoint(shootDirection);
            shootDirection       = shootDirection - transform.position;
            positionToFireToward = shootDirection;
            accuracy             = 0;
        }

        instantiatedArrowScript.InitializeProjectileWithThresholdAndDeviation(positionToFireToward, 12, preHeading, 30, accuracy, attackPowerStrength);
    }
コード例 #26
0
    //fires next projectile in line. if no special projectile loaded, fires a default bouncing projectile
    private void FireCannon()
    {
        if (shotCooldown > 0f)
        {
            return;
        }

        GameObject nuProjectile = Instantiate <GameObject>(projectilePrefab);

        nuProjectile.transform.position = cannonBarrel.transform.position + muzzlePoint;
        ProjectileScript projScrip = nuProjectile.GetComponent <ProjectileScript>();

        //here we check the special bullets loaded
        ProjectileScript.ProjectileType nextType = loadedProjectile ? loadedType : ProjectileScript.ProjectileType.Bouncer;
        if (loadedProjectile)
        {
            loadedProjectile = false;
        }

        projScrip.Shoot(cannonBarrel.transform.position + muzzlePoint, GameSettings.instance.projectileStartSpeed * cannonBarrel.forward, nextType);

        //we set the cooldown
        cooldownGraphic.fillAmount = 1f;
        cooldownGraphic.transform.GetChild(0).gameObject.SetActive(true);
        shotCooldown = GameSettings.instance.shootCooldown;
    }
コード例 #27
0
    // Update is called once per frame
    void Update()
    {
        if (depth > 0 && !split && Time.fixedTime - startTime > timer)
        {
            split = true;
            float mag   = gameObject.rigidbody2D.velocity.magnitude;
            float angle = Mathf.Atan2(gameObject.rigidbody2D.velocity.y, gameObject.rigidbody2D.velocity.x);

            Vector2          leftVector = new Vector2(Mathf.Cos(angle - Mathf.PI / 12), Mathf.Sin(angle - Mathf.PI / 12));
            Rigidbody2D      leftproj   = Instantiate(projectile, transform.position, Quaternion.Euler(new Vector3(0, 0, 0))) as Rigidbody2D;
            ProjectileScript leftscript = leftproj.GetComponent <ProjectileScript>();
            leftscript.parentTag = parentTag;
            SplitShot leftsplit = leftproj.GetComponent <SplitShot>();
            leftsplit.depth   = depth - 1;
            leftproj.velocity = mag * leftVector.normalized;

            Vector2          rightVector = new Vector2(Mathf.Cos(angle + Mathf.PI / 12), Mathf.Sin(angle + Mathf.PI / 12));
            Rigidbody2D      rightproj   = Instantiate(projectile, transform.position, Quaternion.Euler(new Vector3(0, 0, 0))) as Rigidbody2D;
            ProjectileScript rightscript = leftproj.GetComponent <ProjectileScript>();
            rightscript.parentTag = parentTag;
            SplitShot rightsplit = rightproj.GetComponent <SplitShot>();
            rightsplit.depth   = depth - 1;
            rightproj.velocity = mag * rightVector.normalized;
            Destroy(gameObject);
        }
    }
コード例 #28
0
 // Use this for initialization
 void Start()
 {
     pScript        = GetComponent <ProjectileScript>();
     spRend         = GetComponent <SpriteRenderer>();
     maxHealth      = 6;
     pScript.health = maxHealth;
 }
コード例 #29
0
    public static ProjectileScript Spawn(Vector2 position, Sprite sprite, Vector2 vel, bool stickInTarget = false, int pierce = 0, float gravity = 0, float lifetime = 30, bool isEnemy = false, float rotationOffset = 0, float glow = 0)
    {
        var g = new GameObject();

        g.AddComponent <Rigidbody2D>();
        g.AddComponent <BoxCollider2D>();
        g.AddComponent <SpriteRenderer>();
        ProjectileScript p = g.AddComponent <ProjectileScript>();

        //Debug.Log(p);

        #region Position, Rotation and velocity
        p.transform.position = position;
        p.rotationOffset     = rotationOffset;

        p.AddComponents();
        p.rb.velocity           = vel;
        p.transform.eulerAngles = new Vector3(0, 0, p.rb.velocity.GetAngle() + rotationOffset);

        p.useGrav = gravity != 0;
        p.gravity = gravity;
        #endregion

        #region collision Setup
        if (isEnemy)
        {
            p.targetLayer      = LayerMask.NameToLayer("Player");
            p.gameObject.layer = LayerMask.NameToLayer("Enemy");
        }
        else
        {
            p.gameObject.layer = LayerMask.NameToLayer("Player");
            p.targetLayer      = (1 << LayerMask.NameToLayer("Default")) | (1 << LayerMask.NameToLayer("Enemy"));
        }

        p.groundLayer = 1 << LayerMask.NameToLayer("Terrain");

        p.willDespawn = lifetime != -1;
        p.lifetime    = lifetime;

        p.rb.freezeRotation = true;
        p.rb.velocity       = vel;

        p.collider.isTrigger = true;
        (p.collider as BoxCollider2D).size = sprite.rect.size / sprite.pixelsPerUnit;
        #endregion

        #region Visuals
        p.spriteRenderer.sprite = sprite;
        Material m = new Material(Resources.Load <Material>("Basic Material"));
        m.SetTexture("_MainText", sprite.texture);
        m.SetColor("_Color", new Vector4(1, 1, 1, 1) * (glow + 1));

        p.spriteRenderer.material         = m;
        p.spriteRenderer.sortingLayerName = "Effects";
        #endregion

        return(p);
    }
コード例 #30
0
 private void OnTriggerEnter2D(Collider2D collision)
 {
     if (collision.CompareTag("EnemyProj"))
     {
         ProjectileScript temp = collision.GetComponent <ProjectileScript>();
         Damaged(temp.AttackPower);
     }
 }
コード例 #31
0
ファイル: Weapon.cs プロジェクト: hnguyen091188/BurstLine
 public void assignToPrefab(Weapon w, ProjectileScript p)
 {
     p.damage = w.damage;
     p.lifetime = w.lifetime;
     p.owner = w.owner;
     p.speed = w.speed;
     Debug.Log("assign value");
     Debug.Log (p.damage);
 }
コード例 #32
0
	public void getProjectileNames()			// Find and diplay the name of the currently selected projectile
	{
		// Access the currently selected projectile's 'ProjectileScript'
		projectileScript = effectScript.projectiles[effectScript.currentProjectile].GetComponent<ProjectileScript>();
		projectileParticleName = projectileScript.projectileParticle.name;	// Assign the name of the currently selected projectile to projectileParticleName
	}