Beispiel #1
0
    private void Swim()
    {
        if (Time.fixedTime >= nextActionTime)
        {
            //Randomize the speed
            randomizedSpeed = fishSpeed * UnityEngine.Random.Range(.5f, 1.5f);

            //Pick a random target
            targetPosition = PenguinArea.ChooseRandomPosistion(transform.parent.position, 100f, 260f, 2f, 13f);

            //Rotate toward the target
            transform.rotation = Quaternion.LookRotation(targetPosition - transform.position, Vector3.up);

            //Calculate the time to get there
            float timeToGetThere = Vector3.Distance(transform.position, targetPosition) / randomizedSpeed;
            nextActionTime = Time.fixedTime + timeToGetThere;
        }
        else
        {
            //Make sure that fish doesn't swim past the target
            Vector3 moveVector = randomizedSpeed * transform.forward * Time.deltaTime;
            if (moveVector.magnitude <= Vector3.Distance(transform.position, targetPosition))
            {
                transform.position += moveVector;
            }
            else
            {
                transform.position = targetPosition;
                nextActionTime     = Time.fixedTime;
            }
        }
    }