Unity 人物跟誰手指的移動(第一種方式)


長夜漫漫無心睡眠,敲敲代碼,越敲越來勁! 我發現好多小朋友都在玩熊出沒之xxxx這個游戲,居然打了一下午都沒玩通第2關,我把測試也叫來陪我一起玩!

結果他也打不通,我再去叫策划,他也沒打過,我去叫主管,他還是沒打過,我再回去叫測試使用游戲修改大師,修改寶石買完全部的裝備!結果他還是沒打過!

(這款游戲,讓我人生都變得沒有了意義!)

 

2154591iw981vvilxllvvk

 

人物跟隨手指的移動而移動:

第一種方式: 手指移動了多少,主角就移動多少!(我使用的這種方式,存在問題,手指過快滑動,主角會慢慢跟手指有了距離!)

第二種方式: 手指移動到哪里,主角就慢慢移動到手指所在的位置!(還沒寫代碼,理論上不會出現第一種問題),建議采用這種方式實現

 

第一種方式的部分代碼實現:

using UnityEngine;
using System.Collections;


/// <summary>
/// 人物的移動
/// </summary>
public class PlayerMove : MonoBehaviour
{

    private bool isMove;
    private Vector3 recordMouseDownPosition;        //記錄鼠標單擊的位子
     public float speed = 1;
    public UISprite gameBackground;
    public UI2DSprite player;
    public UI2DSpriteAnimation playerAnimation;
    public Sprite playerLeftState;
    public Sprite playerRightState;


    private float areaWidth;
    private float areaHeight;

    //角色移動的邊界

    void Awake()
    {
        //獲取到背景Sprite的寬度和高度
         areaWidth = gameBackground.drawingDimensions.z - player.drawingDimensions.z;
        areaHeight = gameBackground.drawingDimensions.w - player.drawingDimensions.w;
    }


    //開始移動
    public void PlayerStartMove()
    {
        isMove = true;
        recordMouseDownPosition = Input.mousePosition;
    }

    //結束移動
    public void PlayerEndMove()
    {
        isMove = false;
    }

    void LateUpdate()
    {
        if (isMove)
        {
            //鼠標當前坐標-單擊被記錄的坐標
              Vector3 dir = Input.mousePosition - recordMouseDownPosition;

            //切換左右人物圖片狀態
              if (dir.x > 0)
            {
                Debug.Log("切換成左");
                playerAnimation.enabled = false;
                player.nextSprite = playerRightState;
            }
            else if (dir.x < 0)
            {
                Debug.Log("右轉彎圖片");
                playerAnimation.enabled = false;
                player.nextSprite = playerLeftState;

            }
            else if (dir.x == 0)
            {
                playerAnimation.enabled = true;
            }

            //讓人物跟隨手指的方向移動
               this.transform.localPosition = new Vector3(
                    transform.localPosition.x + dir.x * 0.7f,
                    transform.localPosition.y + dir.y * 0.7f,
                    transform.localPosition.z);

            //防止跑出右邊界
              if (transform.localPosition.x > areaWidth && dir.x > 0)
            {
                this.transform.localPosition = new Vector3(
                        areaWidth,
                        transform.localPosition.y,
                        transform.localPosition.z);
            }

            //防止跑出左邊界
              if (transform.localPosition.x < -areaWidth && dir.x < 0)
            {
                this.transform.localPosition = new Vector3(
                        -areaWidth,
                        transform.localPosition.y,
                        transform.localPosition.z);
            }

            //防止跑出上邊界
              if (transform.localPosition.y > areaHeight && dir.y > 0)
            {
                this.transform.localPosition = new Vector3(
                        transform.localPosition.x,
                        areaHeight,
                        transform.localPosition.z);
            }

            //防止跑出下邊界
              if (transform.localPosition.y < -areaHeight && dir.y < 0)
            {
                this.transform.localPosition = new Vector3(
                        transform.localPosition.x,
                        -areaHeight,
                        transform.localPosition.z);
            }

            recordMouseDownPosition = Input.mousePosition;
        }
    }
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM