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

Unity——为什么iPhone6和iPhone7对触摸输入的行为不同?

  •  2
  • savante  · 技术社区  · 7 年前

    我在update()中有下面的代码,可以拖动相机并检测对象上的单击。当我们在iphone 6和x上尝试时,一切都很好,但是当我们在iphone7上尝试时,拖动屏幕非常没有反应,单击对象只在您非常轻触屏幕时才起作用。有人知道发生了什么事吗?

    if (Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Began) {
                 fingerMoved = false;
    
                 if (_eventSystem.IsPointerOverGameObject(Input.GetTouch(0).fingerId)) {
                     fingerMoved = true;
                 }
                 hit_position = Input.GetTouch(0).position;
                 camera_position = cam.position;
             } else if (Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Moved) {
                 current_position = Input.GetTouch(0).position;
                 LeftMouseDrag();
    
                 if (Vector2.Distance(hit_position, current_position) > 7f) {
                     fingerMoved = true;
                 }
    
                 cam.DOMoveY(target_position.y, 0.75f);
             } else if (!fingerMoved && Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Ended) {
                 foreach (var item in storageList) {
                     if (Vector2.Distance(item.transform.position, Camera.main.ScreenToWorldPoint(hit_position)) < 0.5f) {
                         sideMenu.Open(item.myNo);
                     }
                 }
             }
     void LeftMouseDrag() {
         Vector3 direction = Camera.main.ScreenToWorldPoint(current_position) - Camera.main.ScreenToWorldPoint(hit_position);
         direction.x = 0f;
         direction = direction * -1;
         target_position = camera_position + direction;
         if (target_position.y > camMaxY) {
             target_position.y = camMaxY;
         }
         if (target_position.y < camMinY) {
             target_position.y = camMinY;
         }
     }
    
    2 回复  |  直到 7 年前
        1
  •  0
  •   zambari    7 年前

    我不确定这是否有什么不同,但是对于这种类型的东西,使用eventsystems和onpointerclick/onpointerdrag hanlders更容易、更可靠。这样,至少在理论上,任何敏感度的差异都可以通过统一本身来消除。(我不知道它是否这样做

        2
  •  0
  •   savante    6 年前

    这个问题已经自行解决了,我一开始不知道出了什么问题。