unity中2D飞机游戏手指触屏操作的问题
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                unity中2D飞机游戏手指触屏操作的问题
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.                        
                                unity中2D飛機游戲手指觸屏操作的問題
菜雞記錄一下在項目中遇到的坑
 下面就是我用的代碼
非常簡單的一種手指移動方式,但是在項目中如果點擊了UI比如暫停的按鈕,連主角也會跟著瞬移飛到按鈕上。
通常來說暫停后,人物的移動邏輯也會return掉,可是點回游戲中飛機的位置就出現(xiàn)了異常,并不是在暫停之前所在的位置。是因為點擊回到游戲中的那一幀,input.touch又記錄了下來,在移動端可以使用
 EventSystem.current.IsPointerOverGameObject(Input.GetTouch(0).fingerId),電腦端使用EventSystem.current.IsPointerOverGameObject()檢測點擊UI
經(jīng)過實測可以把上面這段代碼代替Update放在FixedUpdate中,但是位置移動又會出現(xiàn)bug,沒有update那樣順滑。
于是乎經(jīng)過了大量的打包測試修改,改成了如下所示
Input.GetTouch(0)表示的是觸碰的第一根手指,如果為(1)就是第二根手指
private bool IsTouchDown; private vector3 LastMoustPos; Void Update() { if (Input.touchCount > 0){if (Input.GetTouch(0).phase == TouchPhase.Began && //當(dāng)手指點下并且沒有點擊到UI時!EventSystem.current.IsPointerOverGameObject(Input.GetTouch(0).fingerId)) {IsTouchDown= true;}if (Input.GetTouch(0).phase == TouchPhase.Ended) //當(dāng)手指移開屏幕{IsTouchDown= false;LastMoustPos = Vector3.zero;}if (IsTouchDown) {if (LastMoustPos != Vector3.zero){Vector3 offset = Camera.main.ScreenToWorldPoint(Input.touches[0].position) - LastMoustPos;base.transform.position = transform.position + offset; }LastMoustPos = Camera.main.ScreenToWorldPoint(Input.touches[0].position);}} }總結(jié)
以上是生活随笔為你收集整理的unity中2D飞机游戏手指触屏操作的问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: 隐藏计算机文件夹中,怎样显示电脑中已隐藏
 - 下一篇: 光功率 博科交换机_华为交换机查看光功率