存储Raycast命中信息

时间:2017-05-18 22:52:42

标签: c# unity3d raycasting

在我的游戏中,玩家使用虚拟模拟物来瞄准特定物体,当他释放模拟角色时,角色应朝向该物体移动。 我想在变量中存储该对象的位置(更像是玩家应该根据对象的位置移动的方向),但前提是它只是光线碰撞的最后一个东西:

Vector3 targetPos;

RaycastHit hit;
if (Physics.Raycast (pos, dir, out hit, 10, targetLayer)) {

    Vector3 moveDir = (hit.point - transform.position).normalized;
    targetPos = moveDir;
} else {
    targetPos = Vector3.zero;   
}

通过这样做,targetPos变量在释放模拟后总是返回到零,即使最后一个碰撞的对象是该特定对象。

编辑: 根据@MukeshSaini评论解决。谢谢,所有。

1 个答案:

答案 0 :(得分:1)

我认为即使在用户发布了Physics.Raycast可能返回false并在targetPos块中将Vector3.zero设置为else的模拟后,我也在使用raycast。

只有当用户使用模拟时,您才可以将条件设​​置为光线投射,这将禁止在用户释放模拟后执行不必要的其他模块,targetPos将保留其正确的值。