Esempio n. 1
0
 public override void OnCursorExit()
 {
     GameSystem.ChangeCursorSprite(GameSystem.setting.the光标图标设置.默认);
     if (onCursorExit != null)
     {
         onCursorExit();
     }
 }
    private IEnumerator UpMenu()
    {
        //获取输入量
        float xDelta = Input.GetAxis("Mouse X") * xSensitivity;
        float yDelta = Input.GetAxis("Mouse Y") * ySensitivity;

        //记录偏移量
        xOffset += xDelta;
        if (xOffset < -xMenuRange)
        {
            xOffset = -xMenuRange;
        }
        if (xOffset > xMenuRange)
        {
            xOffset = xMenuRange;
        }

        yOffset += yDelta;
        float yMaxRange = yRange + yMenuRange;

        if (yOffset > yMaxRange)
        {
            yOffset = yMaxRange;
        }

        //光标父物体平移计算
        float xxTrans;
        float yyTrans;

        xxTrans = cursorXMenuRange * xOffset / xMenuRange;
        yyTrans = cursorYRange * ((yOffset - yRange) / yMenuRange * 2 - 1);

        cursorParent.localPosition = new Vector3(xxTrans, yyTrans, 0);

        //主体旋转计算
        float yRot = yOffset;

        eye.localRotation = Quaternion.Euler(Vector3.left * yRot);

        yield return(0);


        //状态转换
        if (yOffset < yRange)
        {
            GameSystem.ChangeCursorSprite(GameSystem.setting.the光标图标设置.默认);
            GameSystem.gameStatus = GameSystem.GameStatus.Playing;
            yield return(Playing());
        }
        else
        {
            yield return(UpMenu());
        }
    }
    private IEnumerator StartMenu()
    {
        //获取输入量
        float xDelta = Input.GetAxis("Mouse X") * xSensitivity;
        float yDelta = Input.GetAxis("Mouse Y") * ySensitivity;

        //记录偏移量
        xOffset += xDelta;
        if (xOffset < -xMenuRange)
        {
            xOffset = -xMenuRange;
        }
        if (xOffset > xMenuRange)
        {
            xOffset = xMenuRange;
        }
        yOffset += yDelta;
        float yMaxRange = yMenuRange / 2;

        if (yOffset < -yMaxRange)
        {
            yOffset = -yMaxRange;
        }
        if (yOffset > yMaxRange)
        {
            yOffset = yMaxRange;
        }

        //光标父物体平移计算
        float xxTrans;
        float yyTrans;

        xxTrans = cursorXMenuRange * xOffset / xMenuRange;
        yyTrans = cursorYRange * yOffset / yMaxRange;

        cursorParent.localPosition = new Vector3(xxTrans, yyTrans, 0);

        yield return(0);

        //状态转换
        if (GameSystem.gameStatus == GameSystem.GameStatus.Playing)
        {
            xOffset = 0;
            yOffset = 0;
            GameSystem.ChangeCursorSprite(GameSystem.setting.the光标图标设置.默认);
            yield return(Playing());
        }
        else
        {
            yield return(StartMenu());
        }
    }
Esempio n. 4
0
 public override void OnCursorExit()
 {
     GameSystem.ChangeCursorSprite(GameSystem.setting.the光标图标设置.菜单);
     isActive = false;
     GetComponent <SpriteRenderer>().sprite = normal;
 }
Esempio n. 5
0
 public override void OnCursorEnter()
 {
     GameSystem.ChangeCursorSprite(GameSystem.setting.the光标图标设置.菜单2);
     GetComponent <SpriteRenderer>().sprite = over;
 }
 public override void OnCursorEnter()
 {
     GameSystem.ChangeCursorSprite(GameSystem.setting.the光标图标设置.远处调查);
 }
    private IEnumerator Playing()
    {
        //获取输入量
        float xDelta = Input.GetAxis("Mouse X") * xSensitivity;
        float yDelta = Input.GetAxis("Mouse Y") * ySensitivity;
        float h      = Input.GetAxis("Horizontal");
        float v      = Input.GetAxis("Vertical");

        //记录偏移量
        xOffset += xDelta;
        if (xOffset < -xRange)
        {
            xOffset = -xRange;
        }
        if (xOffset > xRange)
        {
            xOffset = xRange;
        }
        yOffset += yDelta;

        float yMaxRange = yRange + yMenuRange;

        if (yOffset < -yMaxRange)
        {
            yOffset = -yMaxRange;
        }
        if (yOffset > yMaxRange)
        {
            yOffset = yMaxRange;
        }

        //光标父物体平移计算
        float xxTrans;
        float yyTrans;

        xxTrans = cursorXRange * Mathf.Sin(xOffset * Mathf.PI / xRange / 2);
        yyTrans = cursorYRange * Mathf.Sin(yOffset * Mathf.PI / yRange / 2);

        cursorParent.localPosition = new Vector3(xxTrans, yyTrans, 0);

        //主体旋转计算
        float yRot = yOffset;

        transform.Rotate(Vector3.up * xDelta);
        eye.localRotation = Quaternion.Euler(Vector3.left * yRot);

        //移动计算
        rid.velocity = transform.forward * v * (v > 0 ? speedForward : speedBackward) + transform.right * h * speedHorizontal;

        yield return(0);


        //状态转换
        if (yOffset > yRange)
        {
            xOffset               = 0;
            rid.velocity          = Vector3.zero;
            GameSystem.gameStatus = GameSystem.GameStatus.UpMenu;
            GameSystem.ChangeCursorSprite(GameSystem.setting.the光标图标设置.菜单);
            yield return(UpMenu());
        }
        else if (yOffset < -yRange)
        {
            xOffset               = 0;
            rid.velocity          = Vector3.zero;
            GameSystem.gameStatus = GameSystem.GameStatus.DownMenu;
            GameSystem.ChangeCursorSprite(GameSystem.setting.the光标图标设置.菜单);
            yield return(DownMenu());
        }
        else
        {
            yield return(Playing());
        }
    }