예제 #1
0
    public void SetVelocityPerSecond(float velocity)
    {
        _velocity          = velocity;
        totalTerrainLength = MathCalculations.MaxBounds()[0];

        delta = (_velocity / totalTerrainLength) * 2f;
    }
예제 #2
0
    private float GetHitProbability(GameObject ownShip, GameObject target, double missileRange)
    {
        double totalTerrainLength = MathCalculations.MaxBounds()[0];

        float missileUnityUnits = (float)(missileRange / totalTerrainLength) * 2f;
        float distance          = Vector3.Distance(ownShip.transform.position, target.transform.position);

        if (distance <= missileUnityUnits)
        {
            Vector3 targetDir = target.transform.position - ownShip.transform.position;
            float   angle     = Vector3.Angle(targetDir, ownShip.transform.forward);

            //Is in semi sphere cone
            if (angle > 90f)
            {
                float directionalProbability = angle / 180f;
                float distanceProbability    = 1 - (distance / missileUnityUnits);
                return(distanceProbability * directionalProbability);
            }
        }
        return(0f);
    }