Пример #1
0
    // Update is called once per frame
    void Update()
    {
        if (entity.CurrentBehaviorTypeProperty != type)
        {
            ((LineRenderer)lines [0]).enabled = false;
            return;
        }

        if (Pause)
        {
            return;
        }

        if (CheckNonant() == destNonant)
        {
            showLines = false;
            entity.EndBehavior();
        }

        if (showLines)
        {
            ((LineRenderer)lines [0]).enabled = true;
        }
        else
        {
            ((LineRenderer)lines [0]).enabled = false;
        }

        Vector3 offset = transform.position - destination;

        offset = new Vector3(offset.x, 0.0f, offset.z);
        Vector3 normalizedOffset = Vector3.Normalize(offset);

        SurfaceContactType contactType = entity.ContactType;

        if ((contactType == SurfaceContactType.Point) || (contactType == SurfaceContactType.Edge))
        {
            xRot -= (speed * Time.deltaTime * 200.0f);
            transform.rotation = Quaternion.Slerp(transform.rotation,
                                                  Quaternion.LookRotation(normalizedOffset) * Quaternion.Euler(new Vector3(xRot, 0.0f, 0.0f)),
                                                  Time.deltaTime * speed * 200.0f);
        }

        if (sphereCollider != null)
        {
            transform.position = new Vector3(transform.position.x - normalizedOffset.x * sphereCollider.radius * Time.deltaTime * speed, transform.position.y,
                                             transform.position.z - normalizedOffset.z * sphereCollider.radius * Time.deltaTime * speed);
        }
        else
        {
            transform.position = new Vector3(transform.position.x - normalizedOffset.x * 0.5f * Time.deltaTime * speed, transform.position.y,
                                             transform.position.z - normalizedOffset.z * 0.5f * Time.deltaTime * speed);
        }
    }
Пример #2
0
    // Update is called once per frame
    void Update()
    {
        if (entity.CurrentBehaviorTypeProperty != type)
        {
            return;
        }

        if (Pause)
        {
            return;
        }

        Vector3 offset = transform.position - destination;

        offset = new Vector3(offset.x, 0.0f, offset.z);
        Vector3 normalizedOffset = Vector3.Normalize(offset);

        if (offset.magnitude < 0.1f)
        {
            entity.EndBehavior();
        }

        SurfaceContactType contactType = entity.ContactType;

        if ((contactType == SurfaceContactType.Point) || (contactType == SurfaceContactType.Edge))
        {
            xRot -= (speed * Time.deltaTime * 200.0f);
            transform.rotation = Quaternion.Slerp(transform.rotation,
                                                  Quaternion.LookRotation(normalizedOffset) * Quaternion.Euler(new Vector3(xRot, 0.0f, 0.0f)),
                                                  Time.deltaTime * speed * 200.0f);
        }

        if (sphereCollider != null)
        {
            transform.position = new Vector3(transform.position.x - normalizedOffset.x * sphereCollider.radius * Time.deltaTime * speed, transform.position.y,
                                             transform.position.z - normalizedOffset.z * sphereCollider.radius * Time.deltaTime * speed);
        }
        else
        {
            transform.position = new Vector3(transform.position.x - normalizedOffset.x * 0.5f * Time.deltaTime * speed, transform.position.y,
                                             transform.position.z - normalizedOffset.z * 0.5f * Time.deltaTime * speed);
        }
    }