第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何統(tǒng)一將鼠標輸入轉(zhuǎn)換為移動觸摸

如何統(tǒng)一將鼠標輸入轉(zhuǎn)換為移動觸摸

C#
HUX布斯 2022-01-09 10:04:37
我是游戲開發(fā)的新手。我正在嘗試做一些像上升一樣的東西。我試圖更改流動代碼以使其可用于移動觸摸屏,但不幸的是失敗了。你能幫我如何為移動設備制作流動代碼嗎?private Vector2 mousePos;private Rigidbody2D rb;private Vector2 offsetClicked;private Vector2 offsetReleased;private void Start () {    rb = GetComponent<Rigidbody2D> ();    offsetReleased = transform.position;}private void FixedUpdate () {    mousePos = Camera.main.ScreenToWorldPoint (Input.mousePosition);    if (Input.GetMouseButton (0)) {        Vector2 newPos = new Vector2 (            Mathf.Clamp(mousePos.x + offsetClicked.x, GameManager.gm.cameraEdges.w + 0.32f, GameManager.gm.cameraEdges.y - 0.32f),            mousePos.y + offsetClicked.y        );        rb.MovePosition (newPos);        offsetReleased = newPos - (Vector2) Camera.main.transform.position;    } //Clicked    else {        Vector2 newPos = new Vector2 (            Mathf.Clamp (Camera.main.transform.position.x + offsetReleased.x, GameManager.gm.cameraEdges.w + 0.32f, GameManager.gm.cameraEdges.y - 0.32f),            Camera.main.transform.position.y + offsetReleased.y        );        rb.MovePosition (newPos);        offsetClicked = newPos - mousePos;    } //Released}以上代碼適用于鼠標。
查看完整描述

2 回答

?
紅糖糍粑

TA貢獻1815條經(jīng)驗 獲得超6個贊

將CrossPlatformInput包導入到您的項目中,您實際上可以繼續(xù)使用 Input.GetMouseButton(xxx)。


using UnityEngine;

using CrossPlatformInput;


    public class MyClass : MonoBehaviour {


    private Vector2 mousePos;

    private Rigidbody2D rb;


    private Vector2 offsetClicked;

    private Vector2 offsetReleased;


    private void Start () {

        rb = GetComponent<Rigidbody2D> ();

        offsetReleased = transform.position;

    }


    private void FixedUpdate () {

        mousePos = Camera.main.ScreenToWorldPoint (Input.mousePosition);


        if (Input.GetMouseButton (0)) {

            Vector2 newPos = new Vector2 (

                Mathf.Clamp(mousePos.x + offsetClicked.x, GameManager.gm.cameraEdges.w + 0.32f, GameManager.gm.cameraEdges.y - 0.32f),

                mousePos.y + offsetClicked.y

            );


            rb.MovePosition (newPos);

            offsetReleased = newPos - (Vector2) Camera.main.transform.position;

        } //Clicked

        else {

            Vector2 newPos = new Vector2 (

                Mathf.Clamp (Camera.main.transform.position.x + offsetReleased.x, GameManager.gm.cameraEdges.w + 0.32f, GameManager.gm.cameraEdges.y - 0.32f),

                Camera.main.transform.position.y + offsetReleased.y

            );


            rb.MovePosition (newPos);

            offsetClicked = newPos - mousePos;

        } //Released

    }


}

(見這里:https : //docs.unity3d.com/Manual/CrossPlatformConsiderations.html)


觸摸和點擊


Input.GetMouseButtonXXX 函數(shù)的設計使得它們在移動設備上具有相當明顯的解釋,即使沒有“鼠標”本身。屏幕上的單次觸摸報告為左鍵單擊,只要手指觸摸屏幕,Input.mousePosition 屬性就會給出觸摸的位置。這意味著具有簡單鼠標交互的游戲通常可以在桌面和移動平臺之間透明地運行。當然,轉(zhuǎn)換通常比這簡單得多。桌面游戲可以使用多個鼠標按鈕,而手機游戲可以一次檢測屏幕上的多次觸摸。


查看完整回答
反對 回復 2022-01-09
?
絕地無雙

TA貢獻1946條經(jīng)驗 獲得超4個贊

不是檢查是否單擊了鼠標按鈕,而是檢查是否存在任何觸摸,然后提取觸摸位置。Input.touches返回最后一幀期間的觸摸列表,因此您可以使用它來查找將mousePos在代碼中替換的觸摸位置。


Touch myTouch;

Vector2 myTouchPosition;


Update()

{

    if (Input.touchCount > 0)

    {

        myTouch = Input.touches[0]; //Get the first touch

        myTouchPosition = Camera.main.ScreenToWorldPoint(myTouch.position);

    }

}

此外,您可以使用觸摸階段來確定您希望在觸摸期間的哪個時間點發(fā)生某些事情。


查看完整回答
反對 回復 2022-01-09
  • 2 回答
  • 0 關注
  • 261 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號