Exemple #1
0
    public void nextTarget(Vector3 target, Vector2 dir)
    {
        lastDir        = tempDir;
        lastTarget     = targetPosition;
        tempDir        = dir;
        targetPosition = target;

        DoTurn(tempDir);

        if (child != null)
        {
            child.nextTarget(lastTarget, lastDir);
        }
    }
Exemple #2
0
 public void SpawnFollower(GameObject prefab, float cellLen)
 {
     if (child != null)
     {
         child.SpawnFollower(prefab, cellLen);
     }
     else
     {
         GameObject c = Instantiate(prefab, transform.parent);
         Vector3    minusLastDir3D = new Vector3(-lastDir.x, 0, -lastDir.y);
         c.transform.position = transform.position + (minusLastDir3D * cellLen);
         child = c.GetComponent <ChildMove>();
         child.nextTarget(lastTarget, lastDir);
         child.speed = speed;
     }
 }
Exemple #3
0
 void Prosper()
 {
     AudioManager.singleton.PlayEat();
     if (child != null)
     {
         child.SpawnFollower(catPrefab, grid.getCellLength());
     }
     else
     {
         GameObject c        = Instantiate(catPrefab, transform.parent);
         Vector3    disDir3D = new Vector3(disabledDir.x, 0, disabledDir.y);
         c.transform.position = transform.position + (disDir3D * grid.getCellLength());
         child = c.GetComponent <ChildMove>();
         child.nextTarget(lastTarget, lastDir);
         child.speed = speed;
     }
 }
Exemple #4
0
    IEnumerator Move()
    {
        yield return(new WaitForEndOfFrame());

        Debug.Log(targetX + " " + targetY);
        targetPosition = grid.getTarget(targetX, targetY);
        Debug.Log(targetPosition);

        transform.position = targetPosition;
        while (true)
        {
            while (Vector3.Distance(transform.position, targetPosition) > 0.01)
            {
                transform.position = Vector3.MoveTowards(transform.position, targetPosition, speed * Time.deltaTime);
                yield return(null);
            }
            targetX += (int)tempDir.x;
            targetY += (int)tempDir.y;
            if (targetX < 0 || targetX > grid.getGridSize() - 1 || targetY < 0 || targetY > grid.getGridSize() - 1)
            {
                targetX = (int)Mathf.Clamp(targetX, 0, grid.getGridSize() - 1);
                targetY = (int)Mathf.Clamp(targetY, 0, grid.getGridSize() - 1);

                yield return(null);

                continue;
            }
            if (child != null)
            {
                child.nextTarget(lastTarget, lastDir);
            }
            DoTurn(tempDir);
            lastTarget     = targetPosition;
            targetPosition = grid.getTarget(targetX, targetY);
            disabledDir    = -tempDir;
            lastDir        = tempDir;
        }
    }