void AKappaPawn::Tick(float DeltaSeconds) { GEngine->AddOnScreenDebugMessage(0, 5.f, FColor::Yellow, FString::FromInt(Score)); // Find movement direction const float ForwardValue = GetInputAxisValue(MoveForwardBinding); const float RightValue = GetInputAxisValue(MoveRightBinding); // Clamp max size so that (X=1, Y=1) doesn't cause faster movement in diagonal directions const FVector MoveDirection = FVector(ForwardValue, RightValue, 0.f).GetClampedToMaxSize(1.0f); // Calculate movement const FVector Movement = MoveDirection * MoveSpeed * DeltaSeconds; // If non-zero size, move this actor if (Movement.SizeSquared() > 0.0f) { const FRotator NewRotation = Movement.Rotation(); FHitResult Hit(1.f); RootComponent->MoveComponent(Movement, NewRotation, true, &Hit); if (Hit.IsValidBlockingHit()) { const FVector Normal2D = Hit.Normal.GetSafeNormal2D(); const FVector Deflection = FVector::VectorPlaneProject(Movement, Normal2D) * (1.f - Hit.Time); RootComponent->MoveComponent(Deflection, NewRotation, true); } } // Create fire direction vector /*const float FireForwardValue = GetInputAxisValue(FireForwardBinding); const float FireRightValue = GetInputAxisValue(FireRightBinding); const FVector FireDirection = FVector(FireForwardValue, FireRightValue, 0.f);*/ FVector WorldPosition, WorldDirection; APlayerController* MyController = Cast<APlayerController>(GetController()); MyController->DeprojectMousePositionToWorld(WorldPosition, WorldDirection); const FVector FireDirection = FVector(WorldDirection.Component(0), WorldDirection.Component(1), 0.f); // Try and fire a shot FireShot(FireDirection); }
FVector2D AGameplayPawn::GetMouseWorldPosition() { UWorld* TestWorld = GetWorld(); if (TestWorld) { APlayerController* PlayerController = TestWorld->GetFirstPlayerController(); FVector2D MousePos = FVector2D(0, 0); FVector WorldPos = FVector(MousePos.X, MousePos.Y, 0); FVector Dir = FVector(0, 0, 0); if (PlayerController != nullptr) { PlayerController->GetMousePosition(MousePos.X, MousePos.Y); PlayerController->DeprojectMousePositionToWorld(WorldPos, Dir); } return FVector2D((int)(WorldPos.X/SCALE_FACTOR), (int)(WorldPos.Y/SCALE_FACTOR)); } return FVector2D::ZeroVector; }