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

來源:互聯網
上載者:User

標籤:

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

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

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

 

 

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

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

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

 

第一種方式的部分代碼實現:
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;        }    }}

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.