private IEnumerator FireContinuosly() { while (true) { // create player laser PlayerLaser laser = Instantiate(laserPrefab, firePoint.position, transform.rotation); var borderPosition = new Vector3(mousePosition.x, mousePosition.y, 0); // calculate the distance from player to mouse position var borderDistance = Geometry.HypotenuseLength( borderPosition.y - laser.transform.position.y, borderPosition.x - laser.transform.position.x ); // calculate animation duration of laser, from player to mouse position var animationDuration = borderDistance * projectileSpeed / (maxX - minX); AudioManager.Instance.PlaySound(SoundType.PlayerLaser); CameraShake.Instance.ShakeCamera(0.5f, 0.1f); // animate laser.transform .DOMove(borderPosition, animationDuration) .OnComplete(() => laser.StopFlying()); yield return(new WaitForSeconds(projectileFiringPeriod)); } }
public override void Clear() { _laser = null; _highLightBgTf = null; _highLightStarTf = null; _subWeaponTf = null; base.Clear(); }
private BulletBase NewBullet(BulletType bulletID) { BulletBase bullet = null; Stack <BulletBase> _stack; // 判断对象池中是否有该类型的对象,如果有,则取出 if (_bulletsPool.TryGetValue(bulletID, out _stack)) { if (_stack.Count > 0) { bullet = _stack.Pop(); } } else { _stack = new Stack <BulletBase>(); _bulletsPool.Add(bulletID, _stack); } // 如果对象池内没有该对象,则创建 if (bullet == null) { switch (bulletID) { case BulletType.ReimuA_Sub1: bullet = new BulletReimuASub1(); break; case BulletType.Player_Laser: bullet = new PlayerLaser(); break; case BulletType.Player_Simple: bullet = new PlayerBulletSimple(); break; case BulletType.Enemy_Laser: bullet = new EnemyLaser(); break; case BulletType.Enemy_CurveLaser: bullet = new EnemyCurveLaser(); break; case BulletType.Enemy_Simple: bullet = new EnemySimpleBullet(); break; case BulletType.Enemy_LinearLaser: bullet = new EnemyLinearLaser(); break; default: Logger.Log("Create Bullet Fail! Invalid BulledId!"); break; } } return(bullet); }
void OnTriggerEnter(Collider collider) { PlayerLaser laser = collider.gameObject.GetComponent <PlayerLaser>(); if (laser) { dying = true; // enemy ship has been shot } }
private void OnCollisionEnter2D(Collision2D collision) { if (collision.gameObject.GetComponent <PlayerLaser>()) { incoming = collision.gameObject.GetComponent <PlayerLaser>(); Debug.Log("HIT!!"); TakeDamage(); } }
void OnTriggerEnter(Collider collider) { PlayerLaser laser = collider.gameObject.GetComponent <PlayerLaser>(); if (laser) { Destroy(collider.gameObject); } }
// Decrease Health of Enemy private void ProcessHit(PlayerLaser laserDamage) { enemyHealthPoints -= laserDamage.GetDamage(); laserDamage.Hit(); // Destroy object when health <= 0 if (enemyHealthPoints <= 0) { DestroyEnemy(); } }
public GameObject CreateLaser() { PlayerLaser laser = GameObject.Instantiate(data.laser).GetComponent <PlayerLaser>(); laser.Init(this, manager); availableLaser.Add(laser.gameObject); return(laser.gameObject); }
// When player laser hits enemy deal damage private void OnTriggerEnter2D(Collider2D collider) { PlayerLaser laserDamage = collider.gameObject.GetComponent <PlayerLaser>(); // Avoid Null reference Exception if (!laserDamage) { return; } ProcessHit(laserDamage); }
public GameObject SpawnLaser() { int index = Random.Range(0, availableLaser.Count); PlayerLaser laser = availableLaser[index].GetComponent <PlayerLaser>(); laser.Activate(data.firePoint, data.firePoint.position - transform.position); availableLaser.RemoveAt(index); return(laser.gameObject); }
void OnTriggerEnter2D(Collider2D col) { PlayerLaser laser = col.gameObject.GetComponent <PlayerLaser> (); // REFER TO PLAYER ATTACK COLLISION if (laser && peace == false) { StartCoroutine(hitAnimation()); Destroy(col.gameObject); currentHits++; //increments hit count if (currentHits >= maxHits) //if hit count is equal to maximum hits then ... { Score.currentScore += enemyPoints; //Increase game score by the enemy's point allocation Destroy(gameObject); //Destroy enemy SpawnEnemy.totalEnemies--; //Decrease total number of enemies in formation } } }
void OnTriggerEnter2D(Collider2D collider) { PlayerLaser projectile = collider.gameObject.GetComponent <PlayerLaser>(); if (projectile) { if ((Health -= projectile.Damage) <= 0) { if (DeathSound != null) { AudioSource.PlayClipAtPoint(DeathSound, Camera.main.transform.position, 1f); } _scoreKeeper.AddScore(ScoreValue); Destroy(gameObject); } projectile.Destroy(); } }
void OnTriggerEnter(Collider collider) { PlayerLaser laser = collider.gameObject.GetComponent <PlayerLaser>(); if (laser && inPosition == true) { health = health - (player.numOfBullets()); Debug.Log(health); // life.Damage(player.numOfBullets()); if (health <= 0) { Destroy(gameObject); GameObject deathExplosion = Instantiate(explosion, new Vector3(26.0f, 40.0f, -1690.0f), Quaternion.identity) as GameObject; Destroy(deathExplosion, 8.0f); AudioSource.PlayClipAtPoint(explosionSound, new Vector3(26.0f, 40.0f, -1690.0f)); winCanvas.SetActive(true); } } }
protected void Shoot() { if (_character.CanShoot() && _character.IsInShootingStatus()) { int subAvailable = PlayerInterface.GetInstance().GetPower() / 100; if (!_isShooting) { // 射出激光的特效 ActiveShootingEffect(true); // 创建激光 if (_laser == null) { _laser = ObjectsPool.GetInstance().CreateBullet(BulletType.Player_Laser) as PlayerLaser; _laser.ChangeStyleById("521000"); //_laser.SetTextureProps(Consts.MarisaAtlasName, "MarisaALaser", 256, 2); } // 星星特效 _curStarScale = 1; _scaleDelta = -ScaleDelta; _highLightStarTf.localScale = Vector3.one; // 设置碰撞 _laser.SetActive(true); } // 更新激光的位置 Vector3 playerPos = _character.GetPosition(); Vector3 laserPos = playerPos + _curPos; _laser.SetPosition(laserPos); // 更新激光角度 ePlayerMoveMode mode = _character.curModeMode; float laserAngle = mode == ePlayerMoveMode.LowSpeed ? 90f : _shootAngles[subAvailable - 1][_subIndex]; _laser.SetRotation(laserAngle); _isShooting = true; } else { if (_isShooting) { ActiveShootingEffect(false); _laser.SetActive(false); } _isShooting = false; } }
private void Awake() { playerShoot = GetComponent <PlayerShoot>(); playerChargePower = GetComponent <PlayerLaser>(); }