コード例 #1
0
ファイル: EnemyAI.cs プロジェクト: hydro17/sailing-ship-ai
    void Start()
    {
        ourShip = this.gameObject;

        enemyBoatController     = GetComponent <EnemyBoatController>();
        angleBetweenShipAndWind = GetComponent <AngleBetweenShipAndWind>();
        windArea = GameObject.Find("Wind Area").GetComponent <WindArea>();

        corner0 = GameObject.Find("Corner 0");
        corner1 = GameObject.Find("Corner 1");
        corner2 = GameObject.Find("Corner 2");
        corner3 = GameObject.Find("Corner 3");

        minDistBetweenParallel = 10;
        maxDistBetweenParallel = 30;

        cannonsTimeOfNextFire = new float[6];
        for (int i = 0; i < cannonsTimeOfNextFire.Length; i++)
        {
            cannonsTimeOfNextFire[i] = Time.time;
        }

        enemyBoatController.SailsDown();
        changeDirectionTime = Time.time + RandomPeriodOfTime();
        activeState         = state_PlayerSearch;
    }
コード例 #2
0
    void Start()
    {
        enemyBoatController     = GetComponent <EnemyBoatController>();
        angleBetweenShipAndWind = GetComponent <AngleBetweenShipAndWind>();

        currentShipToWindAngle = angleBetweenShipAndWind.GetCurrentShipToWindAngle();
        fastestSailToShipAngle = GetFastestSailsToShipAngle(currentShipToWindAngle);
        lastShipToWindAngle    = currentShipToWindAngle;

        activeState = state_SetOptimalSailToShipAngle;
    }
コード例 #3
0
    public void spawnNewEnemy()
    {
        GameObject          enemyBoat   = GameObject.Instantiate(enemyBoatPrefab, getRandomSpawnPoint(), Quaternion.identity);
        EnemyBoatController _controller = enemyBoat.GetComponent <EnemyBoatController>();

        if (_controller == null)
        {
            Debug.LogError("There was no controlle ron enemy!");
            Destroy(enemyBoat);
        }
        enemyBoats.Add(_controller);
    }
コード例 #4
0
    public void unregisterComponent(GameComponent componentToRemove)
    {
        gameComponents.Remove(componentToRemove);
        EnemyBoatController enemyBoat = (EnemyBoatController)componentToRemove;

        if (enemyBoat)
        {
            enemyBoats.Remove(enemyBoat);
        }
        PlayerController player = (PlayerController)componentToRemove;

        if (player)
        {
            players.Remove(player);
        }
    }
コード例 #5
0
    public static void SetShipsParallel(GameObject ourShip, GameObject otherShip, EnemyBoatController enemyBoatController)
    {
        float   ourShipToOtherShipAngle = GetOurShipToOtherShipAngle(ourShip, otherShip);
        Vector3 otherShipDirection      = new Vector3(otherShip.transform.forward.x, 0, otherShip.transform.forward.z);

        if ((ourShipToOtherShipAngle >= -90) && (ourShipToOtherShipAngle <= 90))
        {
            //set our ship parallel to player ship
            enemyBoatController.SetNewShipDirection(otherShipDirection);
        }
        else
        {
            //set our ship parallel but opposite to player ship
            Vector3 rotatedVector = GetRotatedVector(otherShipDirection, 180 * Mathf.Deg2Rad);
            enemyBoatController.SetNewShipDirection(rotatedVector);
        }
    }
コード例 #6
0
    public void registerComponent(GameComponent newComponent)
    {
        gameComponents.Add(newComponent);
        EnemyBoatController enemyBoat = (EnemyBoatController)newComponent;

        if (enemyBoat)
        {
            enemyBoats.Add(enemyBoat);
        }
        PlayerController player = (PlayerController)newComponent;

        if (player)
        {
            playersSpawned = true;
            players.Add(player);
        }
    }