예제 #1
0
        protected IEnumerator MoveY(Action resolve, CSCManager chara, float dist, bool followUp = false, bool backwards = false, float speed = 1f)
        {
            Debug.Log("here MoveY");

            // Change chara sprite/animation
            // If dist > 0, chara faces up
            // Else faces down
            if ((backwards ? dist * -1 : dist) > 0)
            {
                chara.TurnUp();
            }
            else
            {
                chara.TurnDown();
            }
            chara.CharacterAnimator.Play("Walking");

            float   elapsedDist = 0f;
            Vector3 pos         = chara.GetCharaTransform().position;

            while (elapsedDist < Mathf.Abs(dist))
            {
                elapsedDist += Time.deltaTime * chara.AlterSpeed * speed;
                //Debug.Log("elapsedDist: " + elapsedDist);

                //Debug.Log("pos: " + pos);

                //Debug.Log("pos: " + pos);
                chara.GetCharaTransform().position = pos + new Vector3(0, Mathf.Sign(dist) * elapsedDist, 0);
                yield return(null);
            }

            if (!followUp)
            {
                // Stop character when finished
                chara.CharacterAnimator.Play("Idle");
            }

            resolve();
        }
예제 #2
0
 protected IPromise WaitWhileCharaSpeaks(CSCManager chara)
 {
     chara.Speak();
     return(promiseTimer.WaitUntil(t => !(SomeoneIsTalking = chara.Talking())));
 }
예제 #3
0
 protected IPromise PromMoveX(CSCManager chara, float dist, bool followUp = false, bool backwards = false, float speed = 1f)
 {
     return(new Promise((resolve, reject) => StartCoroutine(MoveX(resolve, chara, dist, followUp, backwards, speed))));
 }