TopDown Engine v4.5
Loading...
Searching...
No Matches
MoreMountains.TopDownEngine.WeaponAim2D Class Reference

Add this component to a Weapon and you'll be able to aim it (meaning you'll rotate it) Supported control modes are mouse, primary movement (you aim wherever you direct your character) and secondary movement (using a secondary axis, separate from the movement). More...

Inheritance diagram for MoreMountains.TopDownEngine.WeaponAim2D:
MoreMountains.TopDownEngine.WeaponAim MoreMountains.TopDownEngine.TopDownMonoBehaviour MoreMountains.Tools.MMEventListener< T > MoreMountains.Tools.MMMonoBehaviour MoreMountains.Tools.MMEventListenerBase

Public Member Functions

override void SetCurrentAim (Vector3 newAim, bool setAimAsLastNonNullMovement=false)
 Aims the weapon towards a new point.
virtual void GetOffAim ()
 Resets the aim.
virtual void GetScriptAim ()
 Computes the current aim and direction based on the current aim provided by script.
virtual void GetPrimaryMovementAim ()
 Grabs primary input (left stick, by default) movement.
virtual void GetSecondaryMovementAim ()
 Grabs secondary movement (right stick by default)
virtual void GetMouseAim ()
 Grabs mouse aim.
Public Member Functions inherited from MoreMountains.TopDownEngine.WeaponAim
virtual void ApplyAim ()
virtual Vector3 GetReticlePosition ()
 Returns the position of the reticle.
virtual Vector3 GetMousePosition ()
 Returns the current mouse position.
virtual void RemoveReticle ()
 Removes any remaining reticle.
virtual void AddAdditionalAngle (float addedAngle)
 Adds additional angle to the weapon's rotation.
void OnMMEvent (TopDownEngineEvent engineEvent)
Public Member Functions inherited from MoreMountains.Tools.MMEventListener< T >
void OnMMEvent (T eventType)

Protected Member Functions

override void Initialization ()
 On init, we grab our camera and init our last non null movement.
override void GetCurrentAim ()
 Computes the current aim direction.
virtual void TestLastMovement ()
 Grabs the last movement stored value if necessary.
virtual void StoreLastMovement ()
 Stores the movement value for use next frame.
override void Update ()
 Every frame, we compute the aim direction and rotate the weapon accordingly.
virtual void FixedUpdate ()
 At fixed update we move the target and reticle.
override void DetermineWeaponRotation ()
 Determines the weapon rotation based on the current aim direction.
override void InitializeReticle ()
 If a reticle has been set, instantiates the reticle and positions it.
override void MoveReticle ()
 Every frame, moves the reticle if it's been told to follow the pointer.
override void MoveTarget ()
 Moves the camera target.
Protected Member Functions inherited from MoreMountains.TopDownEngine.WeaponAim
virtual void Start ()
 On Start(), we trigger the initialization.
virtual void LateUpdate ()
 On LateUpdate, resets any additional angle.
virtual void RotateWeapon (Quaternion newRotation, bool forceInstant=false)
 Rotates the weapon, optionnally applying a lerp to it.
virtual void AimAt (Vector3 target)
virtual void HideReticle ()
 Hides (or shows) the reticle based on the DisplayReticle setting.
virtual void HideMousePointer ()
 Hides or show the mouse pointer based on the settings.
void OnDestroy ()
 On Destroy, we reinstate our cursor if needed.
virtual void ResetAdditionalAngle ()
 Resets the additional angle.
virtual void AutoDetectWeaponMode ()
virtual void OnEnable ()
 On enable we start listening for events.
virtual void OnDisable ()
 On disable we stop listening for events.

Protected Attributes

Vector2 _inputMovement
bool _hasOrientation2D = false
bool _facingRightLastFrame
Protected Attributes inherited from MoreMountains.TopDownEngine.WeaponAim
Camera _mainCamera
Vector2 _lastNonNullMovement
Weapon _weapon
Vector3 _currentAim = Vector3.zero
Vector3 _currentAimAbsolute = Vector3.zero
Quaternion _lookRotation
Vector3 _direction
float[] _possibleAngleValues
Vector3 _mousePosition
Vector3 _lastMousePosition
float _additionalAngle
Quaternion _initialRotation
Plane _playerPlane
GameObject _reticle
Vector3 _reticlePosition
Vector3 _newCamTargetPosition
Vector3 _newCamTargetDirection
bool _initialized = false
Vector3 _aimAtDirection
Quaternion _aimAtQuaternion

Properties

override float CurrentAngleRelative [get]
 the current angle the weapon is aiming at, adjusted to compensate for the current orientation of the character
Properties inherited from MoreMountains.TopDownEngine.WeaponAim
virtual float CurrentAngleAbsolute [get, protected set]
virtual Quaternion CurrentRotation [get]
 the weapon's current rotation
virtual Vector3 CurrentAim [get]
 the weapon's current direction
virtual Vector3 CurrentAimAbsolute [get]
 the weapon's current direction, absolute (flip independent)
virtual float CurrentAngle [get, protected set]
 the current angle the weapon is aiming at
virtual float CurrentAngleRelative [get]
 the current angle the weapon is aiming at, adjusted to compensate for the current orientation of the character
virtual GameObject ReticleInstance [get]
 the instance of the reticle in the scene, if this weapon has one
virtual Weapon TargetWeapon [get]

Additional Inherited Members

Public Types inherited from MoreMountains.TopDownEngine.WeaponAim
enum  AimControls {
  Off , PrimaryMovement , SecondaryMovement , Mouse ,
  Script , SecondaryThenPrimaryMovement , PrimaryThenSecondaryMovement , CharacterRotateCameraDirection
}
 the list of possible control modes More...
enum  RotationModes { Free , Strict2Directions , Strict4Directions , Strict8Directions }
 the list of possible rotation modes More...
enum  ReticleTypes { None , Scene , UI }
 the possible types of reticles More...
Public Attributes inherited from MoreMountains.TopDownEngine.WeaponAim
AimControls AimControl = AimControls.SecondaryMovement
 the aim control mode
bool AimControlActive = true
 if this is true, this script will be able to read input from its specified AimControl mode
RotationModes RotationMode = RotationModes.Free
 the rotation mode
float WeaponRotationSpeed = 1f
 the the speed at which the weapon reaches its new position. Set it to zero if you want movement to directly follow input
bool ClampAngle = false
 if this is true, aim angle will be clamped between MinimumAngle and MaximumAngle
float MinimumAngle = -180f
 the minimum angle at which the weapon's rotation will be clamped
float MaximumAngle = 180f
 the maximum angle at which the weapon's rotation will be clamped
float MinimumMagnitude = 0.2f
 the minimum threshold at which the weapon's rotation magnitude will be considered
ReticleTypes ReticleType = ReticleTypes.None
 Defines whether the reticle is placed in the scene or in the UI.
GameObject Reticle
 the gameobject to display as the aim's reticle/crosshair. Leave it blank if you don't want a reticle
float ReticleDistance
 the distance at which the reticle will be from the weapon
float ReticleHeight
 the height at which the reticle should position itself above the ground, when in Scene mode
bool ReticleAtMousePosition
 if set to true, the reticle will be placed at the mouse's position (like a pointer)
bool RotateReticle = false
 if set to true, the reticle will rotate on itself to reflect the weapon's rotation. If not it'll remain stable.
bool ReplaceMousePointer = true
 if set to true, the reticle will replace the mouse pointer
float MouseDeadZoneRadius = 0.5f
 the radius around the weapon rotation centre where the mouse will be ignored, to avoid glitches
bool DisplayReticle = true
 if set to false, the reticle won't be added and displayed
bool MoveCameraTargetTowardsReticle = false
 whether the camera target should be moved towards the reticle to provide a better vision of the possible target. If you don't have a reticle, it'll be moved towards your aim direction.
float CameraTargetOffset = 0.3f
 the offset to apply to the camera target along the transform / reticle line
float CameraTargetMaxDistance = 10f
 the maximum distance at which to move the camera target
float CameraTargetSpeed = 5f
 the speed at which the camera target should be moved

Detailed Description

Add this component to a Weapon and you'll be able to aim it (meaning you'll rotate it) Supported control modes are mouse, primary movement (you aim wherever you direct your character) and secondary movement (using a secondary axis, separate from the movement).

Member Function Documentation

◆ DetermineWeaponRotation()

override void MoreMountains.TopDownEngine.WeaponAim2D.DetermineWeaponRotation ( )
protectedvirtual

Determines the weapon rotation based on the current aim direction.

Reimplemented from MoreMountains.TopDownEngine.WeaponAim.

◆ FixedUpdate()

virtual void MoreMountains.TopDownEngine.WeaponAim2D.FixedUpdate ( )
protectedvirtual

At fixed update we move the target and reticle.

◆ GetCurrentAim()

override void MoreMountains.TopDownEngine.WeaponAim2D.GetCurrentAim ( )
protectedvirtual

Computes the current aim direction.

Reimplemented from MoreMountains.TopDownEngine.WeaponAim.

◆ GetMouseAim()

virtual void MoreMountains.TopDownEngine.WeaponAim2D.GetMouseAim ( )
virtual

Grabs mouse aim.

◆ GetOffAim()

virtual void MoreMountains.TopDownEngine.WeaponAim2D.GetOffAim ( )
virtual

Resets the aim.

◆ GetPrimaryMovementAim()

virtual void MoreMountains.TopDownEngine.WeaponAim2D.GetPrimaryMovementAim ( )
virtual

Grabs primary input (left stick, by default) movement.

◆ GetScriptAim()

virtual void MoreMountains.TopDownEngine.WeaponAim2D.GetScriptAim ( )
virtual

Computes the current aim and direction based on the current aim provided by script.

◆ GetSecondaryMovementAim()

virtual void MoreMountains.TopDownEngine.WeaponAim2D.GetSecondaryMovementAim ( )
virtual

Grabs secondary movement (right stick by default)

◆ Initialization()

override void MoreMountains.TopDownEngine.WeaponAim2D.Initialization ( )
protectedvirtual

On init, we grab our camera and init our last non null movement.

Reimplemented from MoreMountains.TopDownEngine.WeaponAim.

◆ InitializeReticle()

override void MoreMountains.TopDownEngine.WeaponAim2D.InitializeReticle ( )
protectedvirtual

If a reticle has been set, instantiates the reticle and positions it.

Reimplemented from MoreMountains.TopDownEngine.WeaponAim.

◆ MoveReticle()

override void MoreMountains.TopDownEngine.WeaponAim2D.MoveReticle ( )
protectedvirtual

Every frame, moves the reticle if it's been told to follow the pointer.

Reimplemented from MoreMountains.TopDownEngine.WeaponAim.

◆ MoveTarget()

override void MoreMountains.TopDownEngine.WeaponAim2D.MoveTarget ( )
protectedvirtual

Moves the camera target.

Reimplemented from MoreMountains.TopDownEngine.WeaponAim.

◆ SetCurrentAim()

override void MoreMountains.TopDownEngine.WeaponAim2D.SetCurrentAim ( Vector3 newAim,
bool setAimAsLastNonNullMovement = false )
virtual

Aims the weapon towards a new point.

Parameters
newAimNew aim.

Reimplemented from MoreMountains.TopDownEngine.WeaponAim.

◆ StoreLastMovement()

virtual void MoreMountains.TopDownEngine.WeaponAim2D.StoreLastMovement ( )
protectedvirtual

Stores the movement value for use next frame.

◆ TestLastMovement()

virtual void MoreMountains.TopDownEngine.WeaponAim2D.TestLastMovement ( )
protectedvirtual

Grabs the last movement stored value if necessary.

◆ Update()

override void MoreMountains.TopDownEngine.WeaponAim2D.Update ( )
protectedvirtual

Every frame, we compute the aim direction and rotate the weapon accordingly.

Reimplemented from MoreMountains.TopDownEngine.WeaponAim.

Member Data Documentation

◆ _facingRightLastFrame

bool MoreMountains.TopDownEngine.WeaponAim2D._facingRightLastFrame
protected

◆ _hasOrientation2D

bool MoreMountains.TopDownEngine.WeaponAim2D._hasOrientation2D = false
protected

◆ _inputMovement

Vector2 MoreMountains.TopDownEngine.WeaponAim2D._inputMovement
protected

Property Documentation

◆ CurrentAngleRelative

override float MoreMountains.TopDownEngine.WeaponAim2D.CurrentAngleRelative
get

the current angle the weapon is aiming at, adjusted to compensate for the current orientation of the character


The documentation for this class was generated from the following file:
  • H:/Code/MoreMountains/topdownengine/Assets/TopDownEngine/Common/Scripts/Characters/Weapons/WeaponAim2D.cs