【问题标题】:Issues in getting Touch Position in unity new input system在统一新输入系统中获取触摸位置的问题
【发布时间】:2021-10-03 22:50:56
【问题描述】:

我正在制作一款手机游戏,我在统一使用新输入系统正确获取触摸位置时遇到了一些问题。这就是我正在尝试做的事情。

我想获得一个人握住屏幕的时间的点击位置。否则值将为零

我正在获取屏幕坐标中的值,并且这些值是正确的。但是当我使用 camera.main.screenToWorldPoint() 将值转换为世界坐标时,我得到的值只有 -16 左右。我现在不知道是什么问题,我的屏幕点值是正确的,但世界点值只有 -16,有人可以帮我解决这个问题

这是我的代码:----

using UnityEngine;
using UnityEngine.InputSystem;

public class PlayerInputSystem : MonoBehaviour
{
Controlls controlls;
Controlls.TouchActions TouchControlls;
Controlls.KeyBoardActions KeyBoardControlls;

public FloatRefernce HorizontalAxis; // it is just my custom class


private void Awake()
{
    controlls = new Controlls();
    TouchControlls = controlls.Touch;
    KeyBoardControlls = controlls.KeyBoard;

    TouchControlls.TouchPress.performed += ctx => HorizontalAxis.Value = 
            Camera.main.ScreenToWorldPoint(new Vector3(TouchControlls.TouchPosition.ReadValue<float>() , 0f)).x;

    TouchControlls.TouchPress.canceled += ctx => HorizontalAxis.Value = 0;

}



private void OnEnable()
{
    controlls.Enable();
    TouchControlls.Enable();
    KeyBoardControlls.Enable();
}
 private void OnDisable()
  {
    controlls.Disable();
    TouchControlls.Disable();
    KeyBoardControlls.Disable();
  }
}

【问题讨论】:

    标签: c# unity3d touch game-engine


    【解决方案1】:

    Vector3 通过在距相机平面提供的距离 z 处转换屏幕空间点创建的世界空间点。

    对象轴和 ScreenToWorldPoint 轴是两个不同的东西。

    More information on the Unity Documentation about ScreenToWorldPoint.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-27
      • 2018-02-22
      • 2011-04-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-21
      相关资源
      最近更新 更多