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++; }
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"); } } } }
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); }
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; } }
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); }
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); }
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; }
// 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); } }
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); }
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(); } } }
void getEffectNames() { ProjectileScript projectileScript = effectScript.projectiles[effectScript.currentProjectile].GetComponent <ProjectileScript>(); projectileParticleName = projectileScript.projectileParticle.name; impactParticleName = projectileScript.impactParticle.name; }
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); } } }
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(); } }
// 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; } } }
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(); }
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(); } } }
public virtual GameObject SpawnProjectile(Vector3 pos, float angle) { GameObject g = Instantiate(projectilePref, GetBarrelPos(), Quaternion.identity); ProjectileScript proj = g.GetComponent <ProjectileScript>(); return(g); }
// 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 } } }
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; } } } } }
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); } } }
private void ApplyUpgrades(ProjectileScript pScript) { foreach (UpgradeScript upgrade in gems) { upgrade.UpgradeProjectile(pScript); } }
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); } } }
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; }
//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 } }
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); }
//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; }
// 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); } }
// Use this for initialization void Start() { pScript = GetComponent <ProjectileScript>(); spRend = GetComponent <SpriteRenderer>(); maxHealth = 6; pScript.health = maxHealth; }
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); }
private void OnTriggerEnter2D(Collider2D collision) { if (collision.CompareTag("EnemyProj")) { ProjectileScript temp = collision.GetComponent <ProjectileScript>(); Damaged(temp.AttackPower); } }
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); }
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 }