代码之家  ›  专栏  ›  技术社区  ›  Siddharth

玩家触摸输入和连续单向移动组合

  •  1
  • Siddharth  · 技术社区  · 7 年前

    我想创建mmm finger 2类游戏的玩家移动,这里是游戏播放视频: Mmm Fingers 2 by Noodlecake Android Gameplay á´´á´°

    在这个玩家不断向上移动以及基于触摸的基础上,你可以完全控制玩家的移动。这两件事对我来说都不合适。基于手指的运动也在各个方向上起作用,你仍然在不断地向上移动。

    我试着用不同的方法编写了一些代码,但是无法在游戏中创造流畅的体验。

    到目前为止,我已经到了这里:

    void Update ()
    {
    
        // checking condition for death
        if (!isAlive)
            return;
    
        #if UNITY_EDITOR 
        // executed in Unity editor
        if (Input.GetMouseButtonDown (0)) {
    
            //Get the mouse position on the screen and send a raycast into the game world from that position.
            Vector2 worldPoint = Camera.main.ScreenToWorldPoint (Input.mousePosition);
            RaycastHit2D hit = Physics2D.Raycast (worldPoint, Vector2.zero);
    
            //If something was hit, the RaycastHit2D.collider will not be null.
            if (hit.collider != null && hit.transform.CompareTag (GameConstants.TAG_HUMAN_PLAYER)) {
                playerFound = true;
                GameManager.Instance.IsGameRunning = true;
                GameHUDController.Instance.HideGameInstruction();
                hidePlayerName();
            }
    
        } else if (Input.GetMouseButtonUp (0)) {
            playerFound = false;
            StartCoroutine (PerformGameOver ());
        }
    
        Vector3 nextPosition = transform.position;
        nextPosition.x += (Time.deltaTime * speed * 0.5f);
        transform.position = nextPosition;
    
        if (playerFound) {
            Vector3 worldPoint = Camera.main.ScreenToWorldPoint (Input.mousePosition);
            //          worldPoint.x += (speed * Time.deltaTime);
            worldPoint.z = 0f;
            transform.position = worldPoint;
            //          transform.position = Vector3.Lerp (transform.position, worldPoint, Time.deltaTime * 10f);
    
        }
    }
    

    请帮帮忙。

    0 回复  |  直到 7 年前