// Fill out your copyright notice in the Description page of Project Settings. #pragma once #include "CoreMinimal.h" #include "GameFramework/Pawn.h" #include "../../../../Plugins/EnhancedInput/Source/EnhancedInput/Public/InputActionValue.h" #include "Components/PrimitiveComponent.h" #include "Engine/HitResult.h" #include "MyGameModeBase.h" #include "RollaBallPlayer.generated.h" class USpringArmComponent; class UCameraComponent; class UInputAction; class AActor; class USphereComponent; class URollaBallWidget; class USplineComponent; class ALevelManager; UCLASS() class TUTOBEGGINER_API ARollaBallPlayer : public APawn { GENERATED_BODY() public: // Sets default values for this pawn's properties ARollaBallPlayer(); protected: // Called when the game starts or when spawned virtual void BeginPlay() override; virtual void Tick( float DeltaSeconds ) override; //Define Components UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category="Components") USphereComponent* Sphere; UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category="Components") USphereComponent* SphereTrigger; UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category="Components") UStaticMeshComponent* Mesh; UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category="Components") USpringArmComponent* SpringArm; UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category="Components") UCameraComponent* Camera; UPROPERTY(VisibleAnywhere, BlueprintReadWrite, Category="Components") AMyGameModeBase* GameManager; //VARIABLES UPROPERTY(EditAnywhere, BlueprintReadWrite) float MoveForce= 500.0f; UPROPERTY(EditAnywhere, BlueprintReadWrite) float JumpImpulse = 500.0f; UPROPERTY(EditAnywhere, BlueprintReadWrite) int32 MaxJumpCount = 1; UPROPERTY(EditAnywhere, BlueprintReadWrite) int32 JumpCount = 0; UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = Input) UInputAction* JumpAction; UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = Input) UInputAction* MoveAction; public: // Called to bind functionality to input virtual void SetupPlayerInputComponent(class UInputComponent* PlayerInputComponent) override; UFUNCTION() void OnHittt( UPrimitiveComponent* HitComponent, AActor* OtherActor, UPrimitiveComponent* OtherComp, FVector NormalImpulse, const FHitResult& Hit ); UFUNCTION() void OnLeavingFloor( UPrimitiveComponent* OverlappedComponent, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex ); UFUNCTION() void OnEnterFloor( UPrimitiveComponent* OverlappedComponent, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult& SweepResult ); private: //FUNCTIONS void MoveRight( float value ); void MoveForward( const FInputActionValue& Value ); void JumpFct( const FInputActionValue& Value ); bool bIsOnGround = false; UPROPERTY(EditAnywhere) URollaBallWidget* pWidgetRef; ALevelManager* LevelManager; USplineComponent* Spline; float Progress = 0.5f; float MaxSplineDistance = 0.f; };