【问题标题】:Ray for gameobject unity游戏对象统一的光线
【发布时间】:2018-02-15 00:39:06
【问题描述】:

不确定是否可以将 Ray 用于统一的游戏对象,鼠标单击是可能的,但如果游戏对象不可能复制结果?

需要以下代码以相同的方式工作,让光线进入玩家的位置,而不是鼠标点击。

 // Get the place the player has clicked
        Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);

        // Holds information regarding the mouseclick
        RaycastHit hitInfo;

        // Now work out if we fire or not
        if (Physics.Raycast(ray, out hitInfo))
        {
            if(hitInfo.distance < maxRange)
            {
                FireAtPoint(hitInfo.point);

尝试执行以下操作,尽管它没有给出正确的位置,而是在播放器静止时给出了不同的位置。

// Holds information regarding the mouseclick
        RaycastHit hitInfo;

        // Now work out if we fire or not
        if (Physics.Raycast(player.transform.position,transform.forward, out hitInfo))
        {

【问题讨论】:

  • 让我猜猜:你的游戏不是第一人称视角。
  • 不是它不是 :) 抛物线射击和其他东西变得更有趣,这是试图为敌人 AI @Draco18s 替换射线的问题

标签: c# unity3d game-physics raycasting


【解决方案1】:

player.transform.position 将从玩家的位置发射,但transform.forward 将“向前”,无论你的脚本附加到什么,与它的原点旋转有关。

如果它没有朝你想要的方向发射,那么你可能打算写player.transform.forward 或“转发”,因为你的脚本所附的不是你认为的转发。

【讨论】:

  • 我知道这一点并使用 .LookAt() 解决它,但它仍然没有到达预期的位置并且总是会超出播放器 - 但第一个选项非常有效 - 只需要复制它用第二种方式。
  • 在这种情况下,player 的原始位置/旋转听起来不是您所期望的。
【解决方案2】:

问题在于我开火的位置(原点),

// Holds information 
    RaycastHit hitInfo;

    // Now work out if we fire or not
    if (Physics.Raycast(transform.position,transform.forward, out hitInfo))
    {

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-30
    • 2014-01-02
    • 1970-01-01
    • 2017-02-12
    • 1970-01-01
    相关资源
    最近更新 更多