示例#1
0
    void Update()
    {
        switch (slingShotState)
        {
        case SlingShotState.Idle:
            InitializeBird();
            SetSlingShotLineRenderersActive(true);                    //重新显示皮筋
            SetTrajectoryLineRenderersActive(true);                   //重新显示弹道线
            DisPlaySlingshotLineRenderers();
            if (Input.GetMouseButtonDown(0))
            {
                Vector3 location = Camera.main.ScreenToWorldPoint(Input.mousePosition);                  //将屏幕位置转为坐标位置
                if (BirdToThrow.GetComponent <CircleCollider2D>() == Physics2D.OverlapPoint(location))   //鼠标是否点在鸟上
                {
                    slingShotState = SlingShotState.UserPulling;
                }
            }
            break;

        case SlingShotState.UserPulling:                  //小鸟位置跟随鼠标移动
            DisPlaySlingshotLineRenderers();
            if (Input.GetMouseButton(0))
            {
                Vector3 location = Camera.main.ScreenToWorldPoint(Input.mousePosition);
                location.z = 0;
                //皮筋拉伸限度;
                if (Vector3.Distance(location, SlingshotMiddleVector) > BirdDistance)
                {
                    Vector3 maxPosition = (location - SlingshotMiddleVector).normalized * BirdDistance + SlingshotMiddleVector;
                    BirdToThrow.transform.position = maxPosition;
                }
                else
                {
                    BirdToThrow.transform.position = location;
                }
                float distance = Vector3.Distance(SlingshotMiddleVector, BirdWaitPosition.position);
                DisplayTrajectoryLineRenderer2(distance);
            }
            else               //鼠标弹起
            {
                SetTrajectoryLineRenderersActive(false);
                TimeThrow = Time.time;                     //设定起始时间
                float distance = Vector3.Distance(SlingshotMiddleVector, BirdToThrow.transform.position);
                if (distance > 1)
                {
                    SetSlingShotLineRenderersActive(false);                      //隐藏皮筋
                    slingShotState = SlingShotState.BirdFlying;                  //设置小鸟处于发射状态
                    ThrowBird(distance);
                }
                else
                {
                    //GoKit回归
                    BirdToThrow.transform.positionTo(distance / 10, BirdWaitPosition.transform.position)
                    .setOnCompleteHandler((x) => {                             //设置一个处理器
                        x.complete();
                        x.destroy();
                        InitializeBird();
                    });                                       //拉姆达 表达式
                }
            }
            break;
        }
    }
示例#2
0
 /***
  * 初始化小鸟位置
  * */
 void InitializeBird()
 {
     BirdToThrow.transform.position = BirdWaitPosition.position;
     slingShotState = SlingShotState.Idle;
 }