protected void ShotBullet(UbhBullet bullet, IEnumerator bulletMoveRoutine) { if (bullet == null) { return; } bullet.Shot(bulletMoveRoutine); }
// Different from ShotBullet Method(in UbhBaseShot Class), it just care about bullet angle and speed private void ShotChildBullet(UbhBullet bullet, float speed, float angle) { if (bullet == null) { return; } bullet.Shot(speed, angle, 0, 0, false, null, 0, 0, false, 0, 0, false, 0, 0); }
/// <summary> /// Shot UbhBullet object. /// </summary> protected void ShotBullet(UbhBullet bullet, float speed, float angle, bool homing = false, Transform homingTarget = null, float homingAngleSpeed = 0f, float maxHomingAngle = 0f, bool wave = false, float waveSpeed = 0f, float waveRangeSize = 0f) { if (bullet == null) { return; } bullet.Shot(speed, angle, m_angleSpeed, m_accelerationSpeed, homing, homingTarget, homingAngleSpeed, maxHomingAngle, wave, waveSpeed, waveRangeSize, m_usePauseAndResume, m_pauseTime, m_resumeTime); }
/// <summary> /// Shot UbhBullet object. /// </summary> protected void ShotBullet(UbhBullet bullet, float speed, float angle, bool homing = false, Transform homingTarget = null, float homingAngleSpeed = 0f, bool wave = false, float waveSpeed = 0f, float waveRangeSize = 0f) { if (bullet == null) { return; } bullet.Shot(speed, angle, _AccelerationSpeed, _AccelerationTurn, homing, homingTarget, homingAngleSpeed, wave, waveSpeed, waveRangeSize, _UsePauseAndResume, _PauseTime, _ResumeTime, ShotCtrl != null ? ShotCtrl._AxisMove : UbhUtil.AXIS.X_AND_Y); }
public override bool ExcuteAction(PlayerProperty playerProperty) { CurrentTimeFrame++; if (CurrentTimeFrame == 1) { var playerSpriteTrans = playerProperty.m_spriteReference.transform; playerSpriteTrans.rotation = Quaternion.Euler(0, 0, m_playerLookAngle); playerProperty.transform.position = m_playerPosition; } if (CurrentTimeFrame == (m_actionTimeFrame / 2)) { foreach (var bulletGameObject in m_bullets) { bulletGameObject.SetActive(true); UbhBullet bulletComponent = bulletGameObject.GetComponent <UbhBullet>(); if (bulletComponent == null) { bulletComponent = bulletGameObject.AddComponent <UbhBullet>(); } bulletComponent.m_damage = m_bulletDamage; bulletComponent.Shot(m_bulletSpeed, UbhUtil.GetAngleFromTwoPosition(Vector3.zero, bulletGameObject.transform.up), // shot angle 0, 0, false, null, 0, 0, false, 0, 0, false, 0, 0, true); } foreach (var bulletPathNode in m_bulletPathNodes) { UbhObjectPool.Instance.ReleaseGameObject(bulletPathNode); } return(false); } if (CurrentTimeFrame > m_actionTimeFrame) { return(true); } else { return(false); } }
/// <summary> /// Shot UbhBullet object. /// </summary> protected void ShotBullet(UbhBullet bullet, float speed, float angle, bool homing = false, Transform homingTarget = null, float homingAngleSpeed = 0f, bool wave = false, float waveSpeed = 0f, float waveRangeSize = 0f) { if (bullet == null) { return; } bullet.Shot(this, speed, angle, m_accelerationSpeed, m_accelerationTurn, homing, homingTarget, homingAngleSpeed, wave, waveSpeed, waveRangeSize, m_usePauseAndResume, m_pauseTime, m_resumeTime, m_useAutoRelease, m_autoReleaseTime, m_shotCtrl.m_axisMove, m_shotCtrl.m_inheritAngle); }
// Player wants to shot. void Shot() { // it is not enough time after the last shot, shot cancel if (_timer < _playerProperty.m_shootInterval) { return; } if (m_shootList == null || m_shootList.Count <= 0) { Debug.LogWarning("Cannot shot because ShotList is not set."); return; } for (int i = 0; i < m_shootList.Count; i++) { Vector3 shotStartPoint = m_shootList[i].position; Vector3 shotDirection = m_shootList[i].up; float angle = UbhUtil.GetAngleFromTwoPosition(Vector3.zero, shotDirection); UbhBullet bullet = GetBullet(shotStartPoint, Quaternion.Euler(0, 0, angle)); if (bullet == null) { break; } bullet.Shot(_playerProperty.m_bulletSpeed, angle, 0, 0, false, null, 0, 0, false, 0, 0, false, 0, 0, false); bullet.m_damage = _playerProperty.m_bulletDamage; } // finish a shot, reset timer _timer = 0f; }