private IEnumerator Firing() { float fireDelay = 0.15f; //todo field foreach (Transform target in m_lockOns) { var homingMissile = m_missilePool.GetFromPool().GetComponent <HomingMissile>(); homingMissile.TargetLock = target; m_lockOnIcons[target].MissileLaunched = true; m_lockOnIcons[target].Missile = homingMissile; Vector2 randomSpawnDirection = Random.insideUnitCircle.normalized; randomSpawnDirection = new Vector2(randomSpawnDirection.x, Mathf.Abs(randomSpawnDirection.y)); homingMissile.transform.position = transform.position + (Vector3)randomSpawnDirection * 0.5f; homingMissile.Body.AddForce(randomSpawnDirection * LaunchImpulse, ForceMode2D.Impulse); homingMissile.transform.rotation = Quaternion.LookRotation( Vector3.back, target.position - homingMissile.transform.position); homingMissile.StartChase(); yield return(new WaitForSeconds(fireDelay)); } m_lockOns.Clear(); m_lockOnIcons.Clear(); m_weaponState = EWeaponState.neutral; }
// Override this to launch a projetile and/or swing a weapon protected virtual void OnFire(EWeaponState prevState) { if (prevState != EWeaponState.FIRING) { BaseEvents.OnFireStarted.Invoke(); } BaseEvents.OnFire.Invoke(); }
protected override void OnFire(EWeaponState prevState) { base.OnFire(prevState); Transform shootTransform = MuzzleTransform; // Fire a ray cast from the player camera if (weaponOwner.CompareTag("Player")) { LNBPlayerCharacter playerOwner = weaponOwner.GetComponent <LNBPlayerCharacter>(); Transform eyeTran = playerOwner.GetEyeTransform(); // Fire ray int layerMask = 1 << LayerMask.GetMask("AimRay"); RaycastHit rayHit; Vector3 aimDir; Ray aimRay = new Ray(); aimRay.direction = eyeTran.forward; aimRay.origin = eyeTran.position; // If hit something if (Physics.Raycast(aimRay, out rayHit, MaxDistance, layerMask)) { aimDir = rayHit.point - shootTransform.position; } else { aimDir = aimRay.direction * MaxDistance; rayHit.distance = MaxDistance; } shootTransform.rotation = Quaternion.LookRotation(aimDir); #if DD_DEBUG // Aim trace DebugExtension.DebugArrow(aimRay.origin, aimRay.direction * rayHit.distance, Color.red, 1.0f); //Aim Direction DebugExtension.DebugArrow(shootTransform.position, aimDir, Color.green, 1.0f); #endif } // Spawn our projectile GameObject newProjObj = projectilePool.GetNextFree(); if (newProjObj) { newProjObj.SetActive(true); Projectile newProjectile = newProjObj.GetComponent <Projectile>(); if (!newProjectile) { Debug.Log("Instantiated something that's not a projectile! Add it in your prefab!"); return; } newProjectile.Launch(this, weaponOwner, MuzzleTransform); } }
public void PullTrigger() { if (m_weaponState == EWeaponState.neutral) { m_weaponState = EWeaponState.locking; m_lineRenderer.widthMultiplier = 0.15f; m_lockingCoroutine = StartCoroutine(Locking()); } }
public void ReleaseTrigger() { if (m_weaponState == EWeaponState.locking) { m_weaponState = EWeaponState.firing; m_lineRenderer.widthMultiplier = 0.0f; if (m_lockingCoroutine != null) { StopCoroutine(m_lockingCoroutine); } StartCoroutine(Firing()); } }
void SetWeaponState() { weaponState = EWeaponState.IDLE; if (inputController.fire1) { weaponState = EWeaponState.FIRING; } //if (inputController.fire2) // weaponState = EWeaponState.AIMING; // if (inputController.fire1 && inputController.fire2) // weaponState = EWeaponState.AIMEDFIRING; }
void SetWeaponState() { WeaponState = EWeaponState.IDLE; if (InputController.Fire1) { WeaponState = EWeaponState.FIRING; } if (InputController.IsAiming) { WeaponState = EWeaponState.AIMING; } if (InputController.Fire1 && InputController.IsAiming) { WeaponState = EWeaponState.AIMEDFIRING; } }
void SetWeaponState() { WeaponState = EWeaponState.Idle; if (InputController.Fire1) { WeaponState = EWeaponState.Firing; if (InputController.Fire2) { WeaponState = EWeaponState.AimingAndFiring; return; } } if (InputController.Fire2) { WeaponState = EWeaponState.Aiming; } }
private void SetWeaponState() { WeaponState = EWeaponState.Idle; if (InputController.Mouse1) { WeaponState = EWeaponState.Firing; } if (InputController.Mouse2) { WeaponState = EWeaponState.Aiming; } if (InputController.Mouse1 && InputController.Mouse2) { WeaponState = EWeaponState.AimedFiring; } }
void setWeaponState() { WeaponState = EWeaponState.IDLE; if (InputController.fire1) { WeaponState = EWeaponState.FIRING; } if (InputController.fire2) { WeaponState = EWeaponState.AIMING; } if (InputController.fire1 && InputController.fire2) { WeaponState = EWeaponState.AIMEDFIRING; } }
void SetWeaponState() { WeaponState = EWeaponState.IDEL; if (InputControllers.Fire1) { WeaponState = EWeaponState.FIRING; } if (InputControllers.Fire2) { WeaponState = EWeaponState.AIMING; } if (InputControllers.Fire1 && InputControllers.Fire2) { WeaponState = EWeaponState.AIMINGFIREING; } }
void SetWeaponState() { WeaponState = EWeaponState.IDLE; if (InputController.Fire1) { WeaponState = EWeaponState.FIRING; } if (InputController.Fire2) { WeaponState = EWeaponState.AIMING; } if (InputController.Fire1 && InputController.Fire2) { WeaponState = EWeaponState.AIMEDFIRING; } if (InputController.Reload) { WeaponState = EWeaponState.RELOADING; } }
protected virtual void OnFireEnd(EWeaponState nextState) { BaseEvents.OnFireFinished.Invoke(); }
void SetWeaponState(EWeaponState weaponState) { WeaponState = weaponState; }
void SetWeaponState() { WeaponState = EWeaponState.IDLE; }