示例#1
0
    public int TransportObject(InteractionObject whichObject, GameObject whichGoal, WalkToGoal walktogoal, PickUp pickup, float pickuptime, Vector3 holdpointPosition, Vector3 holdPointRotation, int cascade)
    {
        if (cascade == 0) // first communicate some basics to pickup script
        {
            pickup.SetPickUpTime(pickuptime);
            pickup.SetCurrentIO(whichObject);
            cascade++;
        }

        if (cascade == 1) // walk to the object
        {
            // public bool WalkTo(Transform CurrentGoal, bool DrawPath, float maxspeed, float mindist, float anglecut) // to check what the parameters mean
            bool ObjectReached = walktogoal.WalkTo(whichObject.transform, false, 0.4f, 0.2f, 120); // walk towards object to be pickup
            if (ObjectReached)
            {
                cascade++;
            }
        }

        if (cascade == 2)                                              // pick it up
        {
            pickup.SetHoldPoint(holdpointPosition, holdPointRotation); // tell script how to hold this object. This is somehow overwritten if in cascade==0. Here it is called multiple times, but it's computationally light so that's ok
            float pickedup = pickup.PickUpObject(whichObject);         // returns value from 0 to 1 indicating when it has picked up the object
            if (pickedup > 0.50)
            {
                cascade++;
            }                                   // start walking towards goal before reaching 1, that is before object is perfectly in place. This gives a more fluent movement.
        }

        if (cascade == 3) // walk to the goal
        {
            bool GoalReached = walktogoal.WalkTo(whichGoal.transform, false, 0.4f, 0.2f, 120);
            if (GoalReached)
            {
                cascade++;
            }
        }

        if (cascade == 4) // drop object
        {
            float dropped = pickup.DropObject(whichGoal.transform);
            if (dropped > 0.99f)
            {
                pickup.LetGo();
                cascade++;
            }
        }

        return(cascade);
    }
示例#2
0
    // Use this for initialization
    void Start()
    {
        CharacterWalkTo = Character.GetComponent <WalkToGoal>();
        CharacterPickUp = Character.GetComponent <PickUp>();

        // set all goal transforms on a different layer, and disable collisions to normal layer
        if (dropPoint1 != null)
        {
            dropPoint1.layer = 1;
        }
        if (dropPoint2 != null)
        {
            dropPoint2.layer = 1;
        }
        if (dropPoint3 != null)
        {
            dropPoint3.layer = 1;
        }
        Physics.IgnoreLayerCollision(0, 1, true);
    }
示例#3
0
    IEnumerator RunWave(EnemyWave wave)
    {
        WaitForSeconds spawnWait  = new WaitForSeconds(wave.TimeBetweenSpawns);
        int            spawnCount = wave.Count;

        for (int i = spawnCount; i > 0; i--)
        {
            for (int j = 0; j < wave.Enemies.Length; j++)
            {
                Vector2       spawnTile       = GameManager.Instance.mapManager.StartTiles[Random.Range(0, GameManager.Instance.mapManager.StartTiles.Count)];
                GameObject    spawnTileObject = GameManager.Instance.mapManager.GetTile((int)spawnTile.x, (int)spawnTile.y);
                GameObject    enemySpawned    = Instantiate(wave.Enemies[j].BaseEnemy, spawnTileObject.transform.position + (Vector3.up * 2), Quaternion.Euler(0f, 0f, 0f));
                EnemyBehavior enemyInfo       = enemySpawned.GetComponent <EnemyBehavior>();
                enemyInfo.SetInitialValues(wave, wave.Enemies[j]);
                WalkToGoal enemyWalk = enemySpawned.GetComponent <WalkToGoal>();
                enemyWalk.SetValues(enemyInfo, spawnTile);
                currentlyExistingEnemies.Add(enemySpawned);
                yield return(new WaitForSeconds(Random.Range(0.01f, 0.2f)));
            }
            yield return(spawnWait);
        }
        currentlySpawningEnemies = false;
    }
示例#4
0
    public bool CharacterHasReachedGoal; //use this to trigger cascades of behavior (e.g. walk to goal, then grab it etc.)

    // Use this for initialization
    void Start()
    {
        CharacterWalkToGoal = Character.GetComponent <WalkToGoal>();
    }