Mouse Get Hit Result or Line Trace while using Orthographic Camera Actor

Is there a way to get mouse Get hit result or line trace by using orthographic camera?

It works when I switch it to perspective projection, but not on orthographic

PlayerController methods:

/** Returns hit results from doing a collision query at a certain location on the screen */
bool GetHitResultAtScreenPosition(const FVector2D ScreenPosition, const ECollisionChannel TraceChannel, const FCollisionQueryParams& CollisionQueryParams, FHitResult& HitResult) const;
bool GetHitResultAtScreenPosition(const FVector2D ScreenPosition, const ECollisionChannel TraceChannel, bool bTraceComplex, FHitResult& HitResult) const;
bool GetHitResultAtScreenPosition(const FVector2D ScreenPosition, const ETraceTypeQuery TraceChannel, bool bTraceComplex, FHitResult& HitResult) const;
bool GetHitResultAtScreenPosition(const FVector2D ScreenPosition, const TArray<TEnumAsByte<EObjectTypeQuery> > & ObjectTypes, bool bTraceComplex, FHitResult& HitResult) const;

UFUNCTION(BlueprintCallable, Category="Game|Player", meta=(DeprecatedFunction, DeprecationMessage = "Use new GetHitResultUnderCursorByChannel or GetHitResultUnderCursorForObject", TraceChannel=ECC_Visibility, bTraceComplex=true))
bool GetHitResultUnderCursor(ECollisionChannel TraceChannel, bool bTraceComplex, FHitResult& HitResult) const;

/** Performs a collision query under the mouse cursor, looking on a trace channel */
UFUNCTION(BlueprintCallable, Category="Game|Player", meta=(bTraceComplex=true))
bool GetHitResultUnderCursorByChannel(ETraceTypeQuery TraceChannel, bool bTraceComplex, FHitResult& HitResult) const;

/** Performs a collision query under the mouse cursor, looking for object types */
UFUNCTION(BlueprintCallable, Category="Game|Player", meta=(bTraceComplex=true))
bool GetHitResultUnderCursorForObjects(const TArray<TEnumAsByte<EObjectTypeQuery> > & ObjectTypes, bool bTraceComplex, FHitResult& HitResult) const;

UFUNCTION(BlueprintCallable, Category="Game|Player", meta=(DeprecatedFunction, DeprecationMessage = "Use new GetHitResultUnderFingerByChannel or GetHitResultUnderFingerForObject", TraceChannel=ECC_Visibility, bTraceComplex=true))
bool GetHitResultUnderFinger(ETouchIndex::Type FingerIndex, ECollisionChannel TraceChannel, bool bTraceComplex, FHitResult& HitResult) const;

/** Performs a collision query under the finger, looking on a trace channel */
UFUNCTION(BlueprintCallable, Category="Game|Player", meta=(bTraceComplex=true))
bool GetHitResultUnderFingerByChannel(ETouchIndex::Type FingerIndex, ETraceTypeQuery TraceChannel, bool bTraceComplex, FHitResult& HitResult) const;

/** Performs a collision query under the finger, looking for object types */
UFUNCTION(BlueprintCallable, Category="Game|Player", meta=(bTraceComplex=true))
bool GetHitResultUnderFingerForObjects(ETouchIndex::Type FingerIndex, const  TArray<TEnumAsByte<EObjectTypeQuery> > & ObjectTypes, bool bTraceComplex, FHitResult& HitResult) const;

/** Convert current mouse 2D position to World Space 3D position and direction. Returns false if unable to determine value. **/
UFUNCTION(BlueprintCallable, Category="Game|Player", meta = (DisplayName = "ConvertMouseLocationToWorldSpace", Keywords = "deproject"))
bool DeprojectMousePositionToWorld(FVector& WorldLocation, FVector& WorldDirection) const;

/** Convert 2D screen position to World Space 3D position and direction. Returns false if unable to determine value. **/
UFUNCTION(BlueprintCallable, Category="Game|Player", meta = (DisplayName = "ConvertScreenLocationToWorldSpace", Keywords = "deproject"))
bool DeprojectScreenPositionToWorld(float ScreenX, float ScreenY, FVector& WorldLocation, FVector& WorldDirection) const;

I believe DeprojectScreenPositionToWorld is one of the methods which works with ortho, haven’t tested ortho with the rest.

1 Like