Beispiel #1
0
    public IEnumerator DirectMovement(Transform aObject, FloorNode aTargetNode, float aTimeUntilDone)
    {
        Vector3 NewNodePosition = new Vector3(aTargetNode.transform.position.x, aTargetNode.transform.position.y + Constants.Constants.m_HeightOffTheGrid,
                                              aTargetNode.transform.position.z);

        float timeTaken = 0.0f;

        m_IsMoving = true;

        while (aTimeUntilDone - timeTaken > 0)
        {
            if (Vector3.Distance(aObject.transform.position, NewNodePosition) < 0.05f)
            {
                timeTaken = aTimeUntilDone;
            }

            timeTaken       += Time.deltaTime;
            aObject.position = Vector3.Lerp(aObject.position, NewNodePosition, timeTaken / aTimeUntilDone);
            yield return(null);
        }

        aObject.position = NewNodePosition;
        currentFloorNode = aTargetNode;
        aTargetNode.ActivateWalkOnTopTrigger();
        m_IsMoving = false;
        yield return(0);
    }
Beispiel #2
0
    public IEnumerator WallBounceMovement(Transform aObject, Vector3 aTargetPosition, float aTimeUntilDone)
    {
        Vector3 initialPosition = new Vector3(aObject.transform.position.x, aObject.transform.position.y,
                                              aObject.transform.position.z);

        float timeTaken = 0.0f;

        m_IsMoving = true;

        AudioManager.instance.PlaySoundOneShot(AudioManager.AudioClips.WallBounce, AudioManager.Soundtypes.SoundEffects);
        while (aTimeUntilDone - timeTaken > 0)
        {
            if (Vector3.Distance(aObject.transform.position, aTargetPosition) < 0.05f)
            {
                timeTaken = aTimeUntilDone;
            }

            timeTaken       += Time.deltaTime;
            aObject.position = Vector3.Lerp(aObject.position, aTargetPosition, timeTaken / aTimeUntilDone);
            yield return(null);
        }


        timeTaken = 0.0f;

        while (aTimeUntilDone - timeTaken > 0)
        {
            if (Vector3.Distance(aObject.transform.position, initialPosition) < 0.05f)
            {
                timeTaken = aTimeUntilDone;
            }

            timeTaken       += Time.deltaTime;
            aObject.position = Vector3.Lerp(aObject.position, initialPosition, timeTaken / aTimeUntilDone);
            yield return(null);
        }

        currentFloorNode.ActivateWalkOnTopTrigger();
        aObject.position = initialPosition;
        m_IsMoving       = false;
        yield return(0);
    }