コード例 #1
0
    // Update is called once per frame
    void Update()
    {
        if (isMoving)
        {
            if (movingTime + Time.deltaTime >= movingNeedTime)
            {
                anim.Play("Idle");
                this.transform.position = endPosition;
                movingTime = 0.0f;
                isMoving   = false;
            }
            else
            {
                anim.Play("Run");
                this.transform.position += direction * movingSpeed * Time.deltaTime;
                movingTime += Time.deltaTime;
            }
        }

        // 举起物体
        if (Input.GetKeyDown(KeyCode.O))
        {
            if (isOperating)
            {
                // 如果正在进行动作
                if (isLifting)
                {
                    // 正在举着物体
                    if (mainWorldController.TryToDisposeFurniture(operatingFurnitureController, targetCoordinate))
                    {
                        operatingFurnitureController = null;

                        isOperating = false;
                        isLifting   = false;
                    }
                }
                else
                {
                    // 如果正在推
                }
            }
            else
            {
                operatingFurnitureController = mainWorldController.CheckTileLiftablle(targetCoordinate);

                if (operatingFurnitureController != null)
                {
                    operatingFurnitureController.transform.SetParent(this.gameObject.transform);
                    operatingFurnitureController.transform.position = headAnchor.transform.position;

                    operatingFurnitureController.DeregisterFurniture();

                    isOperating = true;
                    isLifting   = true;
                }
            }
        }

        // 准备推拉
        if (Input.GetKeyDown(KeyCode.P))
        {
            if (isOperating)
            {
                if (isPushingOrPull)
                {
                    operatingFurnitureController = null;

                    isOperating     = false;
                    isPushingOrPull = false;
                }
            }
            else
            {
                operatingFurnitureController = mainWorldController.CheckTilePushableOrPullable(targetCoordinate);

                if (operatingFurnitureController != null)
                {
                    isOperating     = true;
                    isPushingOrPull = true;
                }
            }
        }

        if (!isMoving)
        {
            if (Input.GetKeyDown(KeyCode.W))
            {
                CharacterMoveUpdate(0);
            }

            if (Input.GetKeyDown(KeyCode.S))
            {
                CharacterMoveUpdate(2);
            }

            if (Input.GetKeyDown(KeyCode.A))
            {
                CharacterMoveUpdate(3);
            }

            if (Input.GetKeyDown(KeyCode.D))
            {
                CharacterMoveUpdate(1);
            }
        }
    }