지금까지는 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