Ejemplo n.º 1
0
    void DirectionGuide()
    {
        m_target = new Vector3(Camera.main.transform.position.x, transform.position.y, Camera.main.transform.position.z);
        transform.LookAt(m_target);
        Vector3 dirToTarget = (transform.position - agent.transform.position).normalized;

        transform.position = agent.transform.position;
        Script_MovtRotationMgr rotationInstance = Script_MovtRotationMgr.instance;

        switch (rotationInstance.currentDirection)
        {
        case Script_MovtRotationMgr.DIRECTION.RIGHT:
            if (dirToTarget.x < 0)
            {
                GetComponent <SpriteRenderer>().flipX = true;
            }
            else
            {
                GetComponent <SpriteRenderer>().flipX = false;
            }
            break;

        case Script_MovtRotationMgr.DIRECTION.FORWARD:
            if (dirToTarget.z < 0)
            {
                GetComponent <SpriteRenderer>().flipX = true;
            }
            else
            {
                GetComponent <SpriteRenderer>().flipX = false;
            }
            break;

        case Script_MovtRotationMgr.DIRECTION.LEFT:
            if (dirToTarget.x > 0)
            {
                GetComponent <SpriteRenderer>().flipX = true;
            }
            else
            {
                GetComponent <SpriteRenderer>().flipX = false;
            }
            break;

        case Script_MovtRotationMgr.DIRECTION.BACK:
            if (dirToTarget.z > 0)
            {
                GetComponent <SpriteRenderer>().flipX = true;
            }
            else
            {
                GetComponent <SpriteRenderer>().flipX = false;
            }
            break;
        }
    }
Ejemplo n.º 2
0
    //Script_MovRotationMgr instance used
    void DirectionMovementGuiding()
    {
        Script_MovtRotationMgr rotationInstance = Script_MovtRotationMgr.instance;

        if (rotationInstance.IsRotating == false && (m_lookingDirection != 0 || m_verticalDirection != 0))
        {
            straffe     = m_verticalDirection * Time.deltaTime;
            translation = m_lookingDirection * Time.deltaTime;
            transform.Translate(translation, 0f, straffe);

            switch (rotationInstance.currentDirection)
            {
            case Script_MovtRotationMgr.DIRECTION.RIGHT:
                transform.eulerAngles = new Vector3(0, 0, 0);
                break;

            case Script_MovtRotationMgr.DIRECTION.FORWARD:
                transform.eulerAngles = new Vector3(0, -90, 0);
                break;

            case Script_MovtRotationMgr.DIRECTION.LEFT:
                transform.eulerAngles = new Vector3(0, 180, 0);
                break;

            case Script_MovtRotationMgr.DIRECTION.BACK:
                transform.eulerAngles = new Vector3(0, 90, 0);
                break;
            }
        }
        else if (rotationInstance.IsRotating == true)
        {
            Vector3 target = new Vector3(rotationInstance.Pivot.transform.position.x,
                                         transform.position.y,
                                         rotationInstance.Pivot.transform.position.z);
            if (m_lookingDirection != 0)
            {
                const float DEGREE  = 90f;
                float       looking = (m_lookingDirection / Mathf.Abs(m_lookingDirection));
                float       dist    = Vector3.Distance(target, transform.position);
                transform.RotateAround(target, Vector3.down, (Time.deltaTime * DEGREE * looking * (m_charSpeed / (dist * 2))));
                transform.LookAt(target);
            }
            if (m_verticalDirection != 0)
            {
                float looking = (m_verticalDirection / Mathf.Abs(m_verticalDirection));

                transform.position = Vector3.MoveTowards(transform.position, target, Time.deltaTime * looking * m_charSpeed);
            }
        }
    }
Ejemplo n.º 3
0
 // Start is called before the first frame update
 void Start()
 {
     //currentDirection = DIRECTION.RIGHT;
     instance = this;
 }
Ejemplo n.º 4
0
    private void LateUpdate()
    {
        PlayerMovement playerInstance = PlayerMovement.instance;
        Script_MovtRotationMgr rotationInstance = Script_MovtRotationMgr.instance;

        Vector3 target = Vector3.zero;
        Vector3 lookTarget = Vector3.zero;
        float CamHeight = 1f;
        if (rotationInstance.IsRotating == false)
        {
            switch (Script_MovtRotationMgr.instance.currentDirection)
            {
                case Script_MovtRotationMgr.DIRECTION.RIGHT:
                    target = new Vector3(playerInstance.transform.position.x,
                                         playerInstance.transform.position.y + CamHeight,
                                         transform.position.z);

                    lookTarget = new Vector3(playerInstance.transform.position.x,
                                             playerInstance.transform.position.y + CamHeight,
                                             transform.position.z + 1);
                    break;

                case Script_MovtRotationMgr.DIRECTION.FORWARD:
                    target = new Vector3(transform.position.x,
                                         playerInstance.transform.position.y+ CamHeight,
                                         playerInstance.transform.position.z);

                    lookTarget = new Vector3(transform.position.x-1,
                                             playerInstance.transform.position.y + CamHeight,
                                             playerInstance.transform.position.z);
                    break;

                case Script_MovtRotationMgr.DIRECTION.LEFT:
                    target = new Vector3(playerInstance.transform.position.x,
                                         playerInstance.transform.position.y+ CamHeight,
                                         transform.position.z);

                    lookTarget = new Vector3(playerInstance.transform.position.x,
                                             playerInstance.transform.position.y + CamHeight,
                                             transform.position.z-1);
                    break;

                case Script_MovtRotationMgr.DIRECTION.BACK:
                    target = new Vector3( transform.position.x,
                                          playerInstance.transform.position.y+ CamHeight,
                                          playerInstance.transform.position.z);

                    lookTarget = new Vector3(transform.position.x + 1,
                                             playerInstance.transform.position.y + CamHeight,
                                             playerInstance.transform.position.z);
                    break;
            }
            saveStartPos = transform.position;
        }
        else
        {
            Vector3 pivot = new Vector3(rotationInstance.Pivot.transform.position.x,
                                          transform.position.y,
                                          rotationInstance.Pivot.transform.position.z);
            float distToPivot = Vector3.Distance(pivot, saveStartPos);
            target = new Vector3(pivot.x - playerInstance.transform.forward.x * (distToPivot),
                                 playerInstance.transform.position.y + CamHeight,
                                 pivot.z - playerInstance.transform.forward.z * (distToPivot));

            lookTarget = new Vector3(playerInstance.transform.position.x,
                                     transform.position.y,
                                     playerInstance.transform.position.z);

        }

        float coveredTime = (Time.time - smoothTime);
        float dist = Vector3.Distance(transform.position, target);
        float fraction = coveredTime / dist;
        transform.position = Vector3.Lerp(transform.position, target, fraction);

        transform.LookAt(lookTarget);
    }