#15 Robot! Escape! - Aim Accuracy

w298·2022년 11월 8일
0

DEVLOG - Robot! Escape!

목록 보기
15/21
post-thumbnail

지금까지는 AI가 총을 플레이어에게 발사하면 거의 무조건 맞았다.
정확도를 조절하기 위해 GunController 를 수정했다.

public class GunController : MonoBehaviour
{
    ...
    
    [Header("Accuracy")] 
    public float circleRadius = 0.5f;
    public float circleDistance = 10f;

    ...

    private void FixedUpdate()
    {
        // DebugExtension.DebugCircle(muzzleFireStart.transform.position + muzzleFireStart.forward * circleDistance, muzzleFireStart.forward, Color.yellow, circleRadius);
    }

    private Vector3 ApplyAccuracy()
    {
        Vector2 randomOffset = Random.insideUnitCircle;
        randomOffset *= circleRadius;

        Vector3 destination = muzzleFireStart.transform.position;
        destination += muzzleFireStart.forward * circleDistance;
        destination += muzzleFireStart.up * randomOffset.y;
        destination += muzzleFireStart.right * randomOffset.x;

        // DebugExtension.DebugPoint(destination, Color.yellow, 0.5f, 1f);

        return destination;
    }

    private void FireWeapon()
    {
        ...

        RaycastHit hit = CheckHit(ApplyAccuracy());
        
        ...
    }

    ...
}

circleRadius

Random Point 가 만들어 질 수 있는 범위다. 클수록 탄착군이 넓어진다.

  • circleRadius = 0.2

  • circleRadius = 1

circleDistance

Random Point 가 만들어지는 거리다. 클수록 탄착군이 좁아진다.

  • circleDistance = 10

  • circleDistance = 2
profile
Game Developer & Web Developer

0개의 댓글