void shootBullet() { Vector3 newBulletLocation = this.transform.position; BulletMovement newBullet = bullet.GetPooledInstance <BulletMovement>(newBulletLocation); Vector3 offset = newBullet.direction * 0.8f; newBullet.transform.Translate(offset); float vol = Random.Range(0.8f, 1.0f); source.pitch = (Random.Range(0.8f, 1.2f)); source.PlayOneShot(shootSound, vol); }
public void Fire(Vector3 origin, Quaternion rotation) { GameObject bullet = Instantiate(bulletPrefab, origin, rotation); BulletMovement bulletMovement = bullet.GetComponent <BulletMovement>(); float angle = 0.0f; Vector3 axis = Vector3.zero; rotation.ToAngleAxis(out angle, out axis); bulletMovement.SetMovementAngle(angle * axis.z); }
void OnTriggerEnter(Collider other) { if (other.gameObject.layer == LayerMask.NameToLayer("EnemyBullets")) { BulletMovement bullet = other.GetComponent <BulletMovement>(); ApplyDamage(bullet.bulletDamage); bullet.ReturnToPool(); } if (other.gameObject.layer.Equals(LayerMask.NameToLayer("Enemies"))) { ApplyDamage(5); } }
void OnTriggerEnter2D(Collider2D other) { if (other.tag == "SpeedUp") { powerupAudio.clip = playerInfo.speedSound; powerupAudio.Play(); Destroy(other.gameObject); if (speed < speed_max) { speed += 5; } } else if (other.tag == "HealthUp") { powerupAudio.clip = playerInfo.healthSound; powerupAudio.Play(); Destroy(other.gameObject); if (health < health_max) { health += 1; } } else if (other.tag == "ShootSpeedUp") { powerupAudio.clip = playerInfo.shootspeedSound; powerupAudio.Play(); Destroy(other.gameObject); if (shoot_wait > shoot_speed_max) { shoot_wait -= 0.1f; if (bulletPickups < 3) { bulletPickups++; } } } else if (other.tag == "Gun") { //This is here because it causes error because of the last else if } else if (playerInfo.fighting && other.tag == "PlayerBullet" + otherPlayerIndex) { BulletMovement bm = other.GetComponent <BulletMovement>(); Take_Damage(bm.damage); if (bm.piercing-- == 0) { bm.ReturnToPool(); } } }
public static void SimulateStep(ref float3 pos, ref quaternion rot, BulletMovement movementStats, float dt, float3 playerPos) { float3 forward = Up(rot); float3 linMovement = forward * movementStats.moveSpeed * dt; // update position after rotation so that rotation speed that // relies on position is unaffected IntegrateOrientation(ref rot, new float3(0, 0, GetRotationSpeed(movementStats.moveType, movementStats.moveSpeed, forward, math.normalize(playerPos - pos))), dt); pos += linMovement; }
private void InitBulletPosRot(float3 spawnLocation, float3 shooterForward, quaternion fireDirection, float angleOffset, float timeOffset, int moveIdx, float3 playerPos, out float3 pos, out quaternion rot) { // compute position and rotation simulated over timeOffset pos = new float3(spawnLocation.x, spawnLocation.y, bulletHeight); rot = math.normalize(math.mul(fireDirection, quaternion.AxisAngle(shooterForward, angleOffset))); BulletMovement moveStats = bulletMovementStats[moveIdx]; BulletMovementSystem.MoveUtility.SimulateMovement(ref pos, ref rot, moveStats, timeOffset, fixedDT, playerPos); }
void Shoot() { GameObject bullet = spawner.Spawn( (int)currentBulletType, transform.position, transform.parent.rotation); BulletMovement bulletMovement = bullet.GetComponent <BulletMovement>(); if (bulletMovement) { bulletMovement.speed = bulletsSpeed; } }
// Fires a volley to a collision layer. public bool Fire(int layer, Vector3 baseVelocity) { // If we are ready to fire if (coolDown <= 0 && HasAmmo()) { // Get position and direction from the muzzle Vector3 pos = Muzzle.position; Vector3 velocity = Muzzle.right * BulletSpeed; // Fire the whole volley for (int i = 0; i < Volley && HasAmmo(); i++) { GameObject fired = null; if (pool != null) { fired = pool.GetBullet(); } else { fired = Instantiate(Bullet); } if (fired == null) { return(false); } fired.transform.position = pos; float angle = Random.Range(-Spread, Spread); BulletMovement movement = fired.GetComponent <BulletMovement>(); if (movement != null) { movement.SetUp((UseBaseVelocity ? baseVelocity : Vector3.zero) + (Quaternion.Euler(0, 0, angle) * velocity), Damage, Range / BulletSpeed); } fired.layer = layer; currentAmmo--; } // Reset cooldown if (coolDown != -1) { coolDown = RateOfFire; } return(true); } else { return(false); } }
void OnTriggerStay(Collider col) { if (col.gameObject.tag == "Bullet") { BulletMovement bMov = col.gameObject.GetComponent <BulletMovement>(); //destroy only if is not deflecting offlane correctly if (!(bMov.getLaneID() == 1 && bMov.getDeflectDir() == ship.GetComponent <PlayerMovement>().getPlayerDir()) && !bMov.deflecting) { Instantiate(explosion, col.transform.position, col.transform.rotation); Destroy(col.gameObject); Destroy(ship.gameObject); SFX.instance.PlayMampus(); Gameover(); } } }
// simulates moving for time amount of time public static void SimulateMovement(ref float3 pos, ref quaternion rot, BulletMovement movementStats, float time, float dt, float3 playerPos) { // forward euler using dt sized steps while (time > dt) { SimulateStep(ref pos, ref rot, movementStats, dt, playerPos); time -= dt; } // again with anything remaining if (time > 0) { SimulateStep(ref pos, ref rot, movementStats, time, playerPos); } }
public override void Ability(Vector2 playerPosition, Vector2 currentDirection, Animator playerAnimator, Rigidbody2D playerRB = null) { //Starting by creating the projectilek //Looking at where the player is facing float direction = Mathf.Atan2(currentDirection.y, currentDirection.x); //Instantiating the object with regards to where the player is facing GameObject newObject = Instantiate(myObject, playerPosition, Quaternion.Euler(0f, 0f, direction)); BulletMovement movement = newObject.GetComponent <BulletMovement>(); if (movement) { movement.movement(currentDirection); } }
// Update is called once per frame void Update() { if (isFiring) { bulletCounter -= Time.deltaTime; if (bulletCounter <= 0) { bulletCounter = timeBetweenShots; BulletMovement newBullet = Instantiate(bullet, firePoint.position, firePoint.rotation); newBullet.speed = bulletSpeed; } } else { bulletCounter = 0; } }
void OnTriggerEnter(Collider bullet) { if (bullet.tag == "Projectile") { projectile = GameObject.FindGameObjectWithTag("Projectile"); bulletMovement = projectile.GetComponent <BulletMovement> (); health -= bulletMovement.dmg; Destroy(bullet.gameObject); if (health <= 0) { Instantiate(basicExplosion, transform.position, transform.rotation); Die(); } } }
public Bullet(Vector2 orig, Vector2 dir, Sprite sprite, LayerMask lm, float distance = 5.0f, float speed = 10.0f, int damage = 10) { bullet = new GameObject(); BulletMovement bm = bullet.AddComponent <BulletMovement>(); bm.distance = distance; bm.speed = speed; bm.startPosition = orig; bm.direction = dir; bm.toShoot = lm; bm.damage = damage; SpriteRenderer sr = bullet.AddComponent <SpriteRenderer>(); sr.sprite = sprite; bullet.AddComponent <Rigidbody2D>(); bullet.AddComponent <BoxCollider2D>(); }
/// <summary> /// Dispara balas en un arco de 2 veces el ángulo límite. /// </summary> public override void Shoot() { if (shootCooldown == 0f && !disarmed) { ResetCooldown(); float currAngle = -limitAngle; audioSource.PlayOneShot(shootClip); for (int i = 0; i < numBalas; i++) { BulletMovement newBullet = Instantiate <BulletMovement>(bulletPrefab, shootingPoint.position, Quaternion.identity, bulletPool); newBullet.Rotate(transform.right + new Vector3(Mathf.Cos(currAngle), Mathf.Sin(currAngle), 0)); currAngle += limitAngle * 2 / numBalas; } } }
IEnumerator PhaseFive(int i) { float revs = 0f; angle = 0f; isShooting[i] = true; float radius = pool[i].GetRadius(); float angleInBetween = pool[i].getAngleInBetween(); float spawnLag = pool[i].getSpawnLag(); int numBullets = 0; while (revs < 5f) { float rad = Mathf.Deg2Rad * angle; GameObject b = pool[i].GetUnusedObject(); //pool b.SetActive(true); //pool BulletMovement b2 = b.GetComponent <BulletMovement>(); b.transform.localPosition = Vector3.Normalize(new Vector3(Mathf.Cos(rad), Mathf.Sin(rad))) * radius; b2.FireOff(pool[i].transform.localPosition, pool[i].GetBulletSpeed(), pool[i].GetLayer()); float rad2 = Mathf.Deg2Rad * angle + Mathf.PI; GameObject b3 = pool[i].GetUnusedObject(); //pool b3.SetActive(true); //pool BulletMovement b4 = b3.GetComponent <BulletMovement>(); b3.transform.localPosition = Vector3.Normalize(new Vector3(Mathf.Cos(rad2), Mathf.Sin(rad2))) * radius; b4.FireOff(pool[i].transform.localPosition, pool[i].GetBulletSpeed(), pool[i].GetLayer()); if (numBullets > 0 && numBullets % 5 == 0) { pool[i].PlayClip(); } yield return(new WaitForSeconds(spawnLag)); angle += angleInBetween; numBullets += 1; if (angle >= 360f) { revs += 1; angle = 0; } } isShooting[i] = false; }
public bool Fire(Vector3 position) { // Look for a free bullet and then fire it from the player position bool result = false; if (mCharging > 0.0f) { return(result); } int multishotLevel = UserData.GetMultishot(); int bulletSpeedLevel = UserData.GetBulletSpeed(); for (int i = 0; i < multishotLevel + 1; i++) { if (mInactive.Count > 0) { GameObject bullet = mInactive[0]; bullet.transform.parent = null; bullet.transform.position = position + new Vector3(multishotXPos[multishotLevel][i], 0, 0); BulletMovement bm = bullet.GetComponent <BulletMovement>(); bm.SetXVel(multishotAngle[multishotLevel][i]); bm.SetYVel(fastBulletSpeed[bulletSpeedLevel] + GameLogic.BulletSpeed); Vector3 direction = (new Vector3(multishotAngle[multishotLevel][i], fastBulletSpeed[bulletSpeedLevel] + GameLogic.BulletSpeed, 0) - new Vector3(0, 0, 0)).normalized; float rot_z = Mathf.Atan2(direction.y, direction.x) * Mathf.Rad2Deg; bullet.transform.localRotation = Quaternion.Euler(0f, 0f, rot_z - 90); if (bullet.transform.localScale.y < 0) { bullet.transform.localScale *= -1; } bm.AssignToPlayer(true); bullet.SetActive(true); mActive.Add(bullet); mInactive.Remove(bullet); mCharging = RechargeTime - (UserData.GetFireRate() * FireRateUpgradeDifference); result = true; } } // Returns true if a free bullet was found and fired return(result); }
public override void OnBaseShoot(object source, EventArgs e) { if (!hasShooted) { if (Controller.IsPlayer) { GameObject blet = Instantiate(bullet, transform.position + new Vector3(1, 0, 0), transform.rotation); BulletMovement bmMovement = blet.GetComponent <BulletMovement>(); bmMovement.target = "Entity"; } else { GameObject blet = Instantiate(bullet, transform.position - new Vector3(1, 0, 0), transform.rotation); BulletMovement bmMovement = blet.GetComponent <BulletMovement>(); bmMovement.target = "Player"; bmMovement.direction = GameManager.instance.ActualPlayer.transform; } hasShooted = true; } }
IEnumerator PhaseThree(int i) { float revs = 0f; angle = 0f; List <GameObject> movement = new List <GameObject>(); isShooting[i] = true; float radius = pool[i].GetRadius(); float angleInBetween = pool[i].getAngleInBetween(); float spawnLag = pool[i].getSpawnLag(); while (revs < 3f) { while (angle < 360f) { float rad = Mathf.Deg2Rad * angle; GameObject b = pool[i].GetUnusedObject(); b.SetActive(true); BulletMovement m = b.GetComponent <BulletMovement>(); m.Setup(pool[i].GetLayer()); b.GetComponent <SpriteRenderer>().enabled = false; b.transform.localPosition = Vector3.Normalize(new Vector3(Mathf.Cos(rad), Mathf.Sin(rad))) * (radius); movement.Add(b); yield return(new WaitForSeconds(spawnLag)); angle += angleInBetween; } foreach (GameObject b in movement) { b.GetComponent <SpriteRenderer>().enabled = true; b.GetComponent <BulletMovement>().FireOff(pool[i].transform.localPosition, pool[i].GetBulletSpeed(), pool[i].GetLayer()); } pool[i].PlayClip(); revs += 1f; angle = 0f; movement.Clear(); } isShooting[i] = false; }
// copies monobehavior data into component data public void Convert(Entity entity, EntityManager dstManager, GameObjectConversionSystem conversionSystem) { BulletMovement data; // stats exist, prefill if (stats != null) { data = stats.ToBulletMovement(); } // no stats, make default else { data = new BulletMovement { moveType = BulletMovementSystem.MoveType.LINEAR, moveSpeed = 0, rotateSpeed = 0 }; } dstManager.AddComponentData(entity, data); }
void OnTriggerEnter2D(Collider2D c) { if (c.tag == "PlayerBullet1" || c.tag == "PlayerBullet2") { BulletMovement bm = c.GetComponent <BulletMovement>(); Take_Damage(bm.GetDamage()); hurtParticles.gameObject.transform.position = c.gameObject.transform.position; float angle = Vector2.Angle(Vector2.right, transform.position - c.transform.position); if (c.transform.position.y > transform.position.y) { angle = -angle; } rb.AddForce(new Vector2(Mathf.Cos(Mathf.Deg2Rad * angle) * bm.GetDamage(), Mathf.Sin(Mathf.Deg2Rad * angle) * bm.GetDamage()) * knockback); if (bm.piercing-- == 0) { bm.ReturnToPool(); } } }
//This function is used to fire one of the enemies' bullets public static bool FireEnemyBullet(Vector3 position, Vector3 velocity) { GameObject bullet = mInstance.mInactive[0]; bullet.transform.parent = null; bullet.transform.position = position; if (bullet.transform.localScale.y > 0) { bullet.transform.localScale *= -1; } BulletMovement bm = bullet.GetComponent <BulletMovement>(); bm.SetXVel(velocity.x); bullet.transform.localRotation = Quaternion.AngleAxis(-velocity.x, new Vector3(0, 0, 1)); bm.SetYVel(velocity.y); bm.AssignToPlayer(false); bullet.SetActive(true); mInstance.mActive.Add(bullet); mInstance.mInactive.Remove(bullet); return(true); }
void shootBulletFromEnemy() { if (!hp.isAlive) { return; } //enemy.destination = GameManager.Instance.player.transform.position; if (targetSighted) { GameObject instanceBullet = Instantiate(Bullet, Muzzle.transform.position, Quaternion.identity); // float distanceSpreadMultiplier = 50000f /(GameManager.Instance.player.transform.position - transform.position).sqrMagnitude; float distanceSpreadMultiplier = 2.5f / Mathf.Log((GameManager.Instance.player.transform.position - transform.position).sqrMagnitude); //Debug.Log (distanceSpreadMultiplier + ""); instanceBullet.transform.rotation = Quaternion.Euler(Quaternion.LookRotation(GameManager.Instance.player.transform.position - transform.position).eulerAngles + new Vector3(Random.Range(-1f * distanceSpreadMultiplier, 1f * distanceSpreadMultiplier), Random.Range(-1f * distanceSpreadMultiplier, 1f * distanceSpreadMultiplier), Random.Range(-1f * distanceSpreadMultiplier, 1f * distanceSpreadMultiplier))); BulletMovement bulletScript = instanceBullet.GetComponent <BulletMovement> (); bulletScript.ShotSource = this.gameObject; } }
public void Explode() { // Create the explosion if (null != m_goExplosionPrefab) { Instantiate(m_goExplosionPrefab, transform.position, Quaternion.identity); } SpriteToParticleSystem.ExplodeSprite(transform.position, Types.s_fVEL_PixelShatterVelocity, m_goPixelShatterPrefab, GetComponent <SpriteRenderer>().sprite, m_iPixelShatterTTL); // Play audio and add shake. Mines always add maxium shake... GameInstance gi = GameInstance.Object; gi.GetAudioManager().PlayAudioAtLocation(transform.position, m_iSFX_Explosion); gi.GetGameCamera().AddShake(1.0f); // Spawn the Spikes, if we have any { GameObject go = null; Vector3 vTraj = Vector3.zero; BulletMovement gcMovement = null; float fAngle = m_fAngleOffsetRadians; for (int i = 0; i < m_iSpikeCount; ++i) { vTraj = new Vector3(Mathf.Sin(fAngle), Mathf.Cos(fAngle), 0f); go = Instantiate(m_goSpike, transform.position + (vTraj * m_fSpawnOffset), Quaternion.identity); gcMovement = go.GetComponent <BulletMovement>(); if (null != gcMovement) { gcMovement.InitBullet(vTraj, Types.s_fVEL_MineSpikeMovementVelocity, false); } fAngle += (2 * Mathf.PI) / m_iSpikeCount; } } // And die... Destroy(gameObject); }
void shoot() { for (int i = 0; i < targetArray.Length; i++) { GameObject bullet = shooterType == ShooterTypeEnum.FRIENDLY ? FriendlyBulletObjectPool.instance.getPooledObject() : EnemyBulletObjectPool.instance.getPooledObject(); Vector3 launchOrigin = new Vector3(transform.position.x, bullet.transform.position.y, transform.position.z) + targetArray[i].normalized * GameConstants.gridSize / 2; if (bullet != null) { bullet.transform.position = launchOrigin; bullet.transform.rotation = transform.rotation; } else { bullet = (GameObject)Instantiate(bulletPrefab.gameObject, launchOrigin, transform.rotation); } BulletUtil.activateBullet(bullet); BulletMovement bulletMovementComponent = bullet.GetComponent <BulletMovement>(); if (bulletMovementComponent != null) { bulletMovementComponent.setTarget(targetArray[i]); bulletMovementComponent.setVelocity(velocity); bulletMovementComponent.setType(shooterType); } BulletDamage bulletDamageComponent = bullet.GetComponent <BulletDamage>(); if (bulletDamageComponent != null) { bulletDamageComponent.setDamage(damage); } } }
/// <summary> /// Tracks the usage of the space bar and upon it being pressed, it creates a bullet /// that matches the player's given position and a velocity that is slightly faster /// It then adds that bullet to a list in the collision management class /// </summary> public void BulletSpawn() { if (Input.GetKeyDown(KeyCode.Space)) { playerMovement = GetComponent <Movement>(); bulletPosition = playerMovement.playerPosition; //Debug.Log("Player position: " + playerMovement.GetPosition()); GameObject bullet = Instantiate(bulletPrefab, bulletPosition, Quaternion.identity); BulletMovement bScript = bullet.GetComponent <BulletMovement>(); bScript.angleOfRotation = playerMovement.angleOfRotation; bScript.direction = playerMovement.direction; bScript.velocity = playerMovement.velocity + (playerMovement.velocity * 2); bScript.bulletPosition = playerMovement.playerPosition; collisionManager.bullets.Add(bullet); // Debug.Log("Movement Velocity: " + movement.GetVelocity()); // Debug.Log("Bullet velocity: " + velocity); //bScript.bulletPosition = new Vector3(bullet.transform.position.x, bullet.transform.position.y, 0); //Debug.Log("Bullet Position: " + bulletPosition); //direction = playerMovement.GetDirection(); //velocity = playerMovement.GetVelocity(); //angleOfRotation = playerMovement.GetAngleOfRotation(); ////positions[bullets.Length] = bulletPosition; ////velocities[bullets.Length] = velocity; ////bullets[bullets.Length] = bullet; //// Debug.Log("Bullets : " + bullets); //// Debug.Log("Velocities : " + velocities); //// Debug.Log("Positions : " + positions); //Debug.Log(bullets.Length); } }
/// <summary> /// Awake is called when the script instance is being loaded. /// </summary> protected void Awake() { _bullet = GetComponent <BulletProperty> (); _bulletMove = GetComponent <BulletMovement> (); }
// Update is called once per frame void Update() { if (immunity == false) //Immunity is so that the player doesn't immediately die upon entering the game, and after each death can have something of a respawn timeframe { for (int i = 0; i < crabs.Count; i++) { //Debug.Log(crabs[i]); ///Collisions between crabs and the player if (detection.AABBCollision(crabs[i], player)) { eScript = crabs[i].GetComponent <EnemyMovement>(); eScript.position = new Vector3(-200, -200, 0); eScript.velocity = Vector3.zero; sScript.playerPosition = Vector3.zero; spawner.spawnedHazards--; immunity = true; gui.lives--; isColliding = true; break; } else { playerRender.color = Color.white; isColliding = false; } } ///Collsions between bullets and crabs for (int i = 0; i < crabs.Count; i++) { for (int j = 0; j < bullets.Count; j++) { if (detection.AABBCollision(crabs[i], bullets[j])) { eScript = crabs[i].GetComponent <EnemyMovement>(); bScript = bullets[j].GetComponent <BulletMovement>(); spawner.smallerPosition = eScript.position; spawner.smallerVelocity = eScript.velocity; eScript.position = new Vector3(-200, -200, 0); bScript.bulletPosition = new Vector3(200, 200, 0); eScript.velocity = Vector3.zero; bScript.velocity = Vector3.zero; gui.points += 20; spawner.spawnedHazards--; isBulletColliding = true; break; } } } ///Collisions between smaller hazards and player for (int i = 0; i < smallHazards.Count; i++) { if (detection.AABBCollision(smallHazards[i], player)) { eScript = smallHazards[i].GetComponent <EnemyMovement>(); eScript.position = new Vector3(-200, -200, 0); eScript.velocity = Vector3.zero; sScript.playerPosition = Vector3.zero; immunity = true; gui.lives--; isColliding = true; break; } else { isColliding = false; } } ///Collisions between smaller hazards and bullets for (int i = 0; i < smallHazards.Count; i++) { for (int j = 0; j < bullets.Count; j++) { if (detection.AABBCollision(smallHazards[i], bullets[j])) { eScript = smallHazards[i].GetComponent <EnemyMovement>(); bScript = bullets[j].GetComponent <BulletMovement>(); eScript.position = new Vector3(-200, -200, 0); bScript.bulletPosition = new Vector3(200, 200, 0); eScript.velocity = Vector3.zero; bScript.velocity = Vector3.zero; gui.points += 50; isBulletColliding = true; break; } } } } if (immunity == true) { playerRender.color = Color.magenta; timer++; } if (timer >= 40) { immunity = false; timer = 0; } if (gui.lives <= 0) //If dead, move all of the enemies off the playing field so the player cannot get any more points/lose any more lives before the game closes itself { for (int i = 0; i < crabs.Count; i++) { eScript = crabs[i].GetComponent <EnemyMovement>(); eScript.position = new Vector3(-200, -20, 0); eScript.velocity = Vector3.zero; } for (int j = 0; j < smallHazards.Count; j++) { eScript = smallHazards[j].GetComponent <EnemyMovement>(); eScript.position = new Vector3(-200, -20, 0); eScript.velocity = Vector3.zero; } } }
void Update() { if (DifficultyCurve.GameSpeed == 0.0f) { return; } // Update the position of each active bullet, keep a track of bullets which have gone off screen List <GameObject> oldBullets = new List <GameObject>(); for (int count = 0; count < mActive.Count; count++) { Vector3 oldPosition = mActive[count].transform.position; Vector3 dispacement = new Vector3(0, 0, 0); BulletMovement bm = mActive[count].GetComponent <BulletMovement>(); dispacement.y += GameLogic.GameDeltaTime * bm.GetYVel(); dispacement.x += GameLogic.GameDeltaTime * bm.GetXVel(); mActive[count].transform.position = oldPosition + dispacement; RaycastHit2D hit = Physics2D.Raycast(oldPosition, dispacement, dispacement.magnitude, 1 << LayerMask.NameToLayer("Enemy")); //Use Raycast to make sure we are not missing any collision if (hit.collider != null && mActive[count].GetComponent <BulletMovement>().FromPlayer) {//Only the player's bullet will deal damage to enemies hit.collider.gameObject.GetComponent <EnemyBehaviour>().InflictDamage(PlayerCharacter.BulletDamage); mActive[count].SetActive(false); oldBullets.Add(mActive[count]); } else if (mActive[count].transform.position.y > GameLogic.ScreenHeight * 0.5f) { mActive[count].SetActive(false); oldBullets.Add(mActive[count]); } else if (mActive[count].transform.position.y < GameLogic.ScreenHeight * -0.5f) { mActive[count].SetActive(false); oldBullets.Add(mActive[count]); } else { Debug.DrawLine(oldPosition, oldPosition + dispacement, Color.red); } } for (int bullet = 0; bullet < mActive.Count; bullet++) { if (mActive[bullet].activeInHierarchy) { if (!mActive[bullet].GetComponent <BulletMovement>().FromPlayer) { Vector3 diffToBullet = transform.parent.transform.position - mActive[bullet].transform.position; if (diffToBullet.sqrMagnitude < GameObject.Find("Game").GetComponent <GameLogic>().BulletKillDistance) { // Touched Bullet GameObject.Find("Game").GetComponent <GameLogic>().DamagePlayer(10); mActive[bullet].SetActive(false); oldBullets.Add(mActive[bullet]); } } } } // Remove the bullets which have gone off screen, return them to the available list for (int count = 0; count < oldBullets.Count; count++) { oldBullets[count].transform.parent = transform; mActive.Remove(oldBullets[count]); mInactive.Add(oldBullets[count]); } if (mCharging > 0.0f) { mCharging -= GameLogic.GameDeltaTime; } }
// Update is called once per frame void Update() { // Find enemies in scene this.shootCount += Time.deltaTime; this.directionToggleCount += Time.deltaTime; if (this.directionToggleCount > this.directionToggleTime) { this.directionToggleCount = 0.0f; this.directionToggleTime = Random.Range(this.minDirectionToggleTime, this.maxDirectionToggleTime); if (Random.Range(0.0f, 1.0f) > this.directionToggleProbability) { this.directionToggle = !this.directionToggle; } } if (this.FollowEnter && !this.isInShootPreparation) { var deltaPlayer = new Vector2(this.hero.transform.position.x - this.transform.position.x, this.hero.transform.position.y - this.transform.position.y); Vector3 tempVect = deltaPlayer.normalized * this.moveSpeed * Time.deltaTime; float angle = Mathf.Atan2(deltaPlayer.y, deltaPlayer.x) * Mathf.Rad2Deg; this.thisEnemyRigidBody.MoveRotation(angle); if (!this.StopEnter) { if (!this.StopEnterEnemy) { this.thisEnemyRigidBody.MovePosition(this.transform.position + tempVect); } else { if (this.enemyEntered != null) { tempVect = this.enemyEntered.transform.position - this.transform.position; tempVect = tempVect.normalized * this.moveSpeed * this.sideSpeedMultiplier * Time.deltaTime; tempVect = Quaternion.Euler(0.0f, 0.0f, 90.0f * (this.directionToggle?1.0f:-1.0f)) * tempVect; this.thisEnemyRigidBody.MovePosition(this.transform.position + tempVect); } } } else { tempVect = Quaternion.Euler(0.0f, 0.0f, 90.0f * (this.directionToggle?1.0f:-1.0f)) * tempVect * this.sideSpeedMultiplier; this.thisEnemyRigidBody.MovePosition(this.transform.position + tempVect); } } if (this.FireEnter && this.shootCount > this.shootDuration) { this.isInShootPreparation = true; this.shootPreparationCounter = 0.0f; } if (this.shootPreparationCounter <= this.shootPreparationDuration * 0.5f && this.shootPreparationCounter + Time.deltaTime > this.shootPreparationDuration * 0.5f) { var deltaPlayer = new Vector3(this.hero.transform.position.x - this.transform.position.x, this.hero.transform.position.y - this.transform.position.y, 0.0f); var bullet = Instantiate(this.bulletPrefab); bullet.transform.position = this.bulletSpawnerPoint.transform.position; BulletMovement bulletMovementScript = bullet.GetComponent <BulletMovement>(); bulletMovementScript.movementDirection = deltaPlayer; } if (this.shootPreparationCounter > this.shootPreparationDuration) { this.isInShootPreparation = false; this.shootPreparationCounter = 0.0f; } if (this.isInShootPreparation) { this.shootPreparationCounter += Time.deltaTime; } if (this.shootCount > this.shootDuration) { this.shootCount = 0.0f; } }