new void OnShoot() { m_ShootTime = Time.time; m_LastRootPosition = Root.position; m_Velocity = transform.forward * Speed; m_IgnoredColliders = new List <Collider>(); transform.position += m_ProjectileBase.InheritedMuzzleVelocity * Time.deltaTime; // Ignore colliders of owner Collider[] ownerColliders = m_ProjectileBase.Owner.GetComponentsInChildren <Collider>(); m_IgnoredColliders.AddRange(ownerColliders); // Handle case of player shooting (make projectiles not go through walls, and remember center-of-screen trajectory) PlayerWeaponsManager playerWeaponsManager = m_ProjectileBase.Owner.GetComponent <PlayerWeaponsManager>(); if (playerWeaponsManager) { m_HasTrajectoryOverride = true; Vector3 cameraToMuzzle = (m_ProjectileBase.InitialPosition - playerWeaponsManager.WeaponCamera.transform.position); m_TrajectoryCorrectionVector = Vector3.ProjectOnPlane(-cameraToMuzzle, playerWeaponsManager.WeaponCamera.transform.forward); if (TrajectoryCorrectionDistance == 0) { transform.position += m_TrajectoryCorrectionVector; m_ConsumedTrajectoryCorrectionVector = m_TrajectoryCorrectionVector; } else if (TrajectoryCorrectionDistance < 0) { m_HasTrajectoryOverride = false; } if (Physics.Raycast(playerWeaponsManager.WeaponCamera.transform.position, cameraToMuzzle.normalized, out RaycastHit hit, cameraToMuzzle.magnitude, HittableLayers, k_TriggerInteraction)) { if (IsHitValid(hit)) { OnHit(hit.point, hit.normal, hit.collider); } } if (playerWeaponsManager.projectileCheck) { gameObject.tag = "Fast Bullet"; } else if (!playerWeaponsManager.projectileCheck) { gameObject.tag = "Slow Bullet"; } } }
protected override void OnPicked(PlayerCharacterController byPlayer) { PlayerWeaponsManager playerWeaponsManager = byPlayer.GetComponent <PlayerWeaponsManager>(); if (playerWeaponsManager) { if (playerWeaponsManager.AddWeapon(WeaponPrefab)) { // Handle auto-switching to weapon if no weapons currently if (playerWeaponsManager.GetActiveWeapon() == null) { playerWeaponsManager.SwitchWeapon(true); } PlayPickupFeedback(); Destroy(gameObject); } } }
protected override void OnPicked(PlayerCharacterController byPlayer) { PlayerWeaponsManager playerWeaponsManager = byPlayer.GetComponent <PlayerWeaponsManager>(); if (playerWeaponsManager) { WeaponController weapon = playerWeaponsManager.HasWeapon(Weapon); if (weapon != null) { weapon.AddCarriablePhysicalBullets(BulletCount); AmmoPickupEvent evt = Events.AmmoPickupEvent; evt.Weapon = weapon; EventManager.Broadcast(evt); PlayPickupFeedback(); Destroy(gameObject); } } }