【问题标题】:Raycast does not hit an object射线投射不会击中物体
【发布时间】:2017-01-15 14:04:03
【问题描述】:

为什么这个代码在触摸后不打印任何东西?

    void Update()
{
    if (Input.touchCount > 0)
    {
        RaycastHit2D hit = Physics2D.Raycast(Camera.main.ScreenToWorldPoint(Input.GetTouch(0).position), Vector2.zero);
        if (hit)
        {
            print(hit.transform.name);
        }
    }
}

【问题讨论】:

  • 因为它想让你给我们更多的信息。例如。您尝试使用光线投射击中的对象是否具有某种 collider2d,它们是否可以设置为忽略光线投射?
  • 你想击中什么类型的对象?在选择它时放上它的屏幕截图会很有帮助。另外,将print("inside touch"); 放入if (Input.touchCount > 0)。你必须告诉我们代码中的失败之处。
  • 你不应该寻找转换附加到的游戏对象的名称吗?所以像hit.transform.gameObject.name?
  • @Programmer 为什么这个 Camera.main.ScreenToWorldPoint(Input.touches[0].position) 返回的是相机位置而不是触摸位置?
  • 您的最后一个问题/评论是错误的。请考虑在我的第一条评论中回答我的问题。也不要忽视其他 cmets,因为他们的 cmets 表示他们想帮助你。

标签: c# unity3d unity5 unity3d-2dtools


【解决方案1】:

试试这个:

if (Input.touchCount > 0)
    {
        RaycastHit2D hit;

        if (Physics2D.Raycast(Camera.main.ScreenToWorldPoint(Input.GetTouch(0).position), Vector2.zero, out hit))
        {
            print(hit.transform.name);
        }
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-06-15
    • 1970-01-01
    • 1970-01-01
    • 2021-05-28
    • 1970-01-01
    • 1970-01-01
    • 2016-03-17
    • 1970-01-01
    相关资源
    最近更新 更多