예제 #1
0
파일: MoveTrail.cs 프로젝트: w-he/lunacy
 public void takeBack()
 {
     outThere = false;
     state    = hookState.noHook;
     spriteRenderer.enabled = false;
     lr.enabled             = false;
     done.Invoke();
 }
예제 #2
0
파일: MoveTrail.cs 프로젝트: w-he/lunacy
 // <summary>
 // render sprite and move out
 // <summary/>
 public void MoveOut()
 {
     // transform.position = pos;
     // transform.rotation = dir
     outThere = true;
     state    = hookState.hookingOut;
     spriteRenderer.enabled = true;
     timer      = time();
     lr.enabled = true;
 }
예제 #3
0
파일: MoveTrail.cs 프로젝트: w-he/lunacy
    // Update is called once per frame
    void Update()
    {
        Vector3 pos = origin.transform.position;

        if (state == hookState.hookingOut || state == hookState.hookingIn)
        {
            if (state == hookState.hookingOut)
            {
                timer -= Time.deltaTime;
            }
            if (state == hookState.hookingIn)
            {
                // target origin
                transform.rotation =
                    Quaternion.Euler(0, 0, Mathf.Rad2Deg * (Mathf.Atan2((pos - transform.position).y, (pos - transform.position).x)));
                if ((pos - transform.position).magnitude < epsilon)
                {
                    takeBack();
                    return;
                }
            }
            transform.Translate(Vector3.right * Time.deltaTime * moveSpeed);
            lr.SetPosition(0, pos);
            lr.SetPosition(1, transform.position);
            if (timer < 0)
            {
                state = hookState.hookingIn;
            }
        }
        else if (state == hookState.hooked)
        {
            transform.position = meteor.position;
            lr.SetPosition(0, pos);
            lr.SetPosition(1, transform.position);
        }
    }
예제 #4
0
파일: MoveTrail.cs 프로젝트: w-he/lunacy
 // landed on a meteor
 public void latchOn(Transform meteor)
 {
     this.meteor = meteor;
     state       = hookState.hooked;
     hookPull.Invoke();
 }