Beispiel #1
0
    void Update()
    {
        transform.LookAt(player);

        timeElapsed += Time.deltaTime;
        Vector3 delta   = player.position - transform.position;
        Vector3 viewPos = cam.WorldToViewportPoint(transform.position);
        float   t       = timeElapsed / timer;

        t = t * t * t * (t * (6f * t - 15f) + 10f);

        if (timeElapsed >= timer)
        {
            vTo = new Vector3(Random.Range(-75f, 75f), Random.Range(-20f, 20f), Random.Range(-75f, 75f));
            if (Mathf.Abs(vTo.x) < 40)
            {
                vTo.x = 40;
            }
            if (Mathf.Abs(vTo.z) < 40)
            {
                vTo.z = 40;
            }
            timeElapsed = 0f;
        }

        if (viewPos.x >= 1 || viewPos.x <= 0 || viewPos.y >= 1 || viewPos.y <= 0)
        {
            //Debug.Log("Off Camera");
            carousel.RotateAround(cam.transform.parent.transform.rotation.y, t);
        }

        if (delta.magnitude > 100)
        {
            vTo = player.position - transform.position;
        }
        else if (delta.magnitude < 50)
        {
            vTo = cam.ViewportToWorldPoint(new Vector3(0.5f, 0.5f, 60));
        }


        controller.Move(0.2f * vTo * Time.deltaTime);



        //Vector3 pos = transform.position;

        //transform.position = Vector3.Lerp(pos, vTo, t);


        //float tolerance = 15f;
        //Random.Range(0, 10);

        //if (Mathf.Abs(transform.position.x - origin.position.x) < tolerance) {
        //    //transform.Translate();
        //}
    }