人物瞄准鬼畜问题
人物瞄准近距离的位置会出现鬼畜情况
根据代码分析,发现如果Diretion的起始位置为MuzzleLoc时 人物瞄准近距离时会鬼畜,而使用PawnLoc时则不存在这样的问题,问题在于MuzzleLocation是一个实时变动的值,它附着于人物武器的枪口上,所以在瞄准近距离的地方时,方向向量的变化会非常大,并且会一直变换,所以导致人物的瞄准方向(变量Direction)一直在改变,且变化幅度很大。
void AHaliPlayerController::Turn(float Value) { if (Value != 0.f) { FHitResult TraceHitResult; GetHitResultUnderCursor(ECC_Visibility, true, TraceHitResult); FVector CursorLoc = TraceHitResult.Location; FVector MuzzleLoc = PlayerCharacter->GetMuzzleLocation(); FVector PawnLoc = PlayerCharacter->GetActorLocation(); FVector Direction = CursorLoc - MuzzleLoc; FRotator NewPawnRotation = Direction.Rotation(); float PawnYaw = GetPawn()->GetActorRotation().Yaw; float NewPawnYaw = NewPawnRotation.Yaw; float NewPawnAngle = NewPawnYaw; float PawnAngle = PawnYaw; if (Value != 0.0f && PawnYaw != NewPawnYaw) { SetControlRotation(NewPawnRotation); } PlayerCharacter->SetAimPitch(Direction); } }