Example #1
0
 public override void StartAction()
 {
     isDone      = false;
     actionTimer = actionDelay;
     actionCount = 0;
     actions.Clear();
     if (item == null)
     {
         GameObject stick = ScanForObject.Scan(dog.transform.position, 35f, "Stick", dog.dogLayerMask);
         if (stick != null)
         {
             item = stick.transform;
         }
     }
     if (item != null)
     {
         actions.Add(new FollowTarget(dog, item, Vector3.zero, true, 0.2f));
         actions.Add(new Grab(dog, item.gameObject));
         actions.Add(new FollowTarget(dog, player, player.forward, true, 0.5f));
         actions.Add(new Drop(dog));
         NextAction();
     }
     else
     {
         isDone = true;
     }
 }
Example #2
0
 public override void StartAction()
 {
     isDone      = false;
     actionTimer = actionDelay;
     tree        = ScanForObject.Scan(dog.transform.position, 55f, "Tree", dog.dogLayerMask);
     if (tree != null)
     {
         actions.Add(new GotoPosition(dog, tree.transform.position + dog.transform.right));
         NextAction();
     }
     else
     {
         isDone = true;
     }
 }
    Vector3 GetPos(float minForward, float maxForward, float minRight, float maxRight, float radius, string tag)
    {
        width = startWidth;
        Vector3 pos     = Vector3.zero;
        Vector3 scanPos = new Vector3(direction.x, 0, direction.z) * Random.Range(minForward, maxForward);

        scanPos += dog.transform.position;
        scanPos += GetPerpendicular2DVector(direction) * Random.Range(minRight, maxRight);
        if (dog.terrain != null)
        {
            scanPos.y = dog.terrain.SampleHeight(scanPos);
        }
        GameObject obj = ScanForObject.Scan(scanPos, radius, tag, dog.dogLayerMask);

        if (obj != null)
        {
            pos = obj.transform.position;
            if (Random.Range(0, 100 / dog.sniffPercent) == 0)
            {
                dog.isSniffing = true;
            }
            //Temporary I guess.
            width   = 1.5f;
            obj.tag = "Untagged";
        }
        else
        {
            pos = scanPos;
        }
        NavMeshHit hit;

        if (NavMesh.SamplePosition(pos, out hit, 3.0f, 1))
        {
            pos = hit.position;
        }
        else
        {
            pos = path.corners [1];
        }
        //dog.TestWaypoint.position = (pos);
        return(pos);
    }