Ejemplo n.º 1
0
    void Update()
    {
        Vector3 positionBeforeRotation = targetTransform.transform.position;

        int rotate = 0;

        //if (Input.GetKey(KeyCode.Q)) {
        //    rotate = -degreesRotation;
        //} else if (Input.GetKey(KeyCode.E)) {
        //    rotate = degreesRotation;
        //}

        targetTransform.transform.RotateAround(PlayerMovementController.GetPlayerPosition(), Vector3.up, rotate * Time.deltaTime);
        Vector3 deltaRotation = targetTransform.transform.position - positionBeforeRotation;

        rotationOffset = rotationOffset + deltaRotation;


        /* currentOffset is applied to position instead of rotation in FixedUpdate until Unity resolves its Japes */

        Vector3 offset = Input.GetKey(KeyCode.Space) ? FollowMouse() : Vector3.zero;

        currentOffset = Vector3.Lerp(currentOffset, player.transform.rotation * offset, moveSmoothing);

        /**/

        targetTransform.transform.position = PlayerMovementController.GetPlayerPosition() + positionOffset + rotationOffset + currentOffset;// + offset; // uncomment for fun times
        transform.position = Vector3.Lerp(transform.position, targetTransform.transform.position, turnSmoothing * Time.deltaTime);
    }
    void Update()
    {
        Vector3 playerPosition = PlayerMovementController.GetPlayerPosition();
        float   cameraY        = Camera.main.transform.rotation.eulerAngles.y;

        Ray     playerAxis   = new Ray(playerPosition, Quaternion.AngleAxis(cameraY, Vector3.up) * Vector3.right);
        Vector3 crossProduct = Vector3.Cross(playerAxis.direction, movingObject.position - playerAxis.origin);

        float distanceToPlayerAxis = crossProduct.magnitude * Mathf.Sign(crossProduct.y);
        float layeringValue        = distanceToPlayerAxis;

        for (int i = 0; i < spriteChildren.Length; i++)
        {
            int sortingOrder = (int)(layeringValue * IsometricRangePerZUnit) * LayerDifferenceConstant + relativeSpriteLayers[i];
            spriteChildren[i].sortingOrder = sortingOrder;
        }

        for (int i = 0; i < lineRendererChildren.Length; i++)
        {
            int sortingOrder = (int)(layeringValue * IsometricRangePerZUnit) * LayerDifferenceConstant + relativeLineRendererLayers[i];
            lineRendererChildren[i].sortingOrder = sortingOrder;
        }
    }