ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 라인 트레이스 추가
    Game Programming/언리얼 2023. 10. 3. 13:30
    		FHitResult FireHit;
    		const FVector Start{ SocketTransform.GetLocation() };
    		const FQuat Rotation{ SocketTransform.GetRotation() };
    		const FVector RotationsAxis{ Rotation.GetAxisX() };
    		const FVector End{ Start + RotationsAxis * 50'000.f };
    
    		GetWorld()->LineTraceSingleByChannel(FireHit, Start, End, ECollisionChannel::ECC_Visibility);
    
    		if (FireHit.bBlockingHit)
    		{
    			DrawDebugLine(GetWorld(), Start, End, FColor::Red, false, 2.f);
    			DrawDebugPoint(GetWorld(), FireHit.Location, 5.f, FColor::Red, false, 2.f);
    		}

    Barrel Socket(총구)에서 시작 위치, 방향을 가져와 끝 위치를 계산했다.

    		const FVector Start{ SocketTransform.GetLocation() };
    		const FQuat Rotation{ SocketTransform.GetRotation() };
    		const FVector RotationsAxis{ Rotation.GetAxisX() };
    		const FVector End{ Start + RotationsAxis * 50'000.f };

    소켓 행렬의 특정 축의 방향을 알고 싶다면 행렬의 회전성분을 4원수로 변경한 뒤 원하는 축의 방향을 벡터로 읽어오면 된다.

     

    ECollisionChannel 열거형은 아래와 같이 정의되어있다.

    • WorldStatic : 움직이지 않는 정적인 배경 액터에 사용하는 콜리전 채널이다. 주로 스태틱메시 액터에 있는 스태틱메시 컴포넌트에 사용한다.
    • WorldDynamic : 움직이는 액터에 사용하는 콜리전 채널이다. 블루프린트에 속한 스태틱메시 컴포넌트에 사용한다.
    • Pawn : 플레이어가 조종하는 물체에 주로 사용한다. 캐릭터의 충돌을 담당하는 캡슐 컴포넌트에 설정된다.
    • Visibility : 배경 물체가 시각적으로 보이는지 탐지하는데 사용한다. 탐지에서 폰은 제외된다. 마우스로 물체를 선택하는 피킹(Picking) 기능을 구현할 때 사용한다.
    • Camera : 카메라 설정을 위해 카메라와 목표물 간에 장애물이 있는지 탐지하는데 사용한다. 이전 GTA 방식으로 캐릭터를 조작할 때 장애물이 시야를 가리면 카메라를 장애물 앞으로 줌인하는 기능(SpringArm->bCollisionTest = true)이 있었다. 이때 사용하는 채널이 Camera 채널이다.
    • PhysicsBody : 물리 시뮬레이션으로 움직이는 컴포넌트에 설정한다.

    음,,,어떤 물체끼리 콜리전 시킬지 결정하는 열거형 같은데 이득우 책을 읽어봤는데

    CollisionChannel을 사용자가 선택해서 커스텀하면 ECC_GameTraceChannel1 - 18까지 지정된다.

    이 값은 DefaultEngine.ini 파일에서 확인이 가능하다.

    'Game Programming > 언리얼' 카테고리의 다른 글

    빔 파티클  (1) 2023.10.03
    임펙트 파티클  (1) 2023.10.03
    Animation Montage  (0) 2023.10.03
    Muzzle Flash  (0) 2023.09.30
    사운드 추가  (0) 2023.09.30
Designed by Tistory.