コード例 #1
0
    private void CheckAvianTouch()
    {
        var hit = Physics2D.Raycast(
            new Vector2(Camera.main.ScreenToWorldPoint(Input.mousePosition).x,
                        Camera.main.ScreenToWorldPoint(Input.mousePosition).y), Vector2.zero, 0f);

        if (hit.collider)
        {
            selectedAvian           = hit.collider.GetComponentInParent <Avian>();
            arrowTransform.position = selectedAvian.transform.position;
        }
    }
コード例 #2
0
    private void CheckAnimationEnd()
    {
        launchTimer += Time.deltaTime;

        if (launchTimer <= 2.0f)
        {
            return;
        }

        if (selectedAvian.Stopped() || launchTimer >= 20.0f)
        {
            GameCamera.Instance.Reset();
            Destroy(selectedAvian.gameObject);
            selectedAvian = null;
            state         = GameState.Idle;
            launchTimer   = 0;
            avianCount--;

            if (avianCount == 0)
            {
                for (int i = 0; i < pickables.Length; i++)
                {
                    if (pickables[i])
                    {
                        EndScreen.Instance.Show(false);
                        return;
                    }
                }
                EndScreen.Instance.Show(true);
            }
            else
            {
                for (int i = 0; i < pickables.Length; i++)
                {
                    if (pickables[i])
                    {
                        // Pickables still left, create new avian
                        CreateAvian();
                        return;
                    }
                }
                EndScreen.Instance.Show(true);
            }
        }
    }
コード例 #3
0
    private void CheckAvianDrag()
    {
        var delta  = AvianMouseDelta();
        var length = delta.magnitude;

        arrowTransform.gameObject.SetActive(true);

        if (length > 0.0f)
        {
            var angle = Vector3.SignedAngle(Vector3.right, delta / length, Vector3.forward);

            if (Mathf.Abs(angle) <= 90.0f)
            {
                arrowTransform.localRotation = Quaternion.Euler(0, 0, angle);
                arrowTransform.localScale    = new Vector3(length / defaultArrowDist, arrowTransform.localScale.y);

                if (Input.GetMouseButtonUp(0))
                {
                    var flightForce = delta * force;

                    if (flightForce.sqrMagnitude > 0.0f)
                    {
                        arrowTransform.gameObject.SetActive(false);
                        arrowTransform.localScale = new Vector3(0, arrowTransform.localScale.y);
                        selectedAvian.rBody.AddForce(flightForce);
                        GameCamera.Instance.target = selectedAvian.transform;
                        state = GameState.Animation;
                    }
                }
                return;
            }
            else if (Input.GetMouseButtonUp(0))
            {
                selectedAvian = null;
            }
        }
        else if (Input.GetMouseButtonUp(0))
        {
            selectedAvian = null;
        }
        arrowTransform.gameObject.SetActive(false);
    }
コード例 #4
0
ファイル: Avian.cs プロジェクト: TBartl/TheBloodBook
 void Awake()
 {
     S        = this;
     animator = this.GetComponent <AvianAnimator>();
 }