Пример #1
0
    private void followActor()
    {
        if (ActorToFollow != null)
        {
            float distanceToActor = Vector3.Distance(ActorToFollow.transform.position, transform.position);
            if (distanceToActor > minFollowDistance && distanceToActor <= maxFollowDistance)
            {
                Vector3 directionToActor = ActorToFollow.transform.position - transform.position;

                human.moveInDirection(directionToActor.normalized);
                return;
            }
        }
        human.moveInDirection(Vector3.zero);
    }
    private void movement()
    {
        // read inputs
        float h      = CrossPlatformInputManager.GetAxis("Horizontal");
        float v      = CrossPlatformInputManager.GetAxis("Vertical");
        bool  crouch = Input.GetKey(KeyCode.C);

        // calculate move direction to pass to character
        if (m_Cam != null)
        {
            // calculate camera relative direction to move:
            m_CamForward = Vector3.Scale(m_Cam.forward, new Vector3(1, 0, 1)).normalized;
            m_Move       = v * m_CamForward + h * m_Cam.right;
        }
        else
        {
            // we use world-relative directions in the case of no main camera
            m_Move = v * Vector3.forward + h * Vector3.right;
        }
#if !MOBILE_INPUT
        // walk speed multiplier
        if (Input.GetKey(KeyCode.LeftShift))
        {
            m_Move *= 0.4f;
        }
#endif

        // pass all parameters to the character control script
        human.moveInDirection(m_Move);

        m_Jump = false;
    }