2017-05-18 136 views
0

在我的游戏中,玩家使用虚拟模拟来瞄准特定对象,当他释放模拟角色时应该朝该对象移动。 我要存储对象的位置(更像,玩家应移动基于对象的位置方向)的一个变量,但只有当它是光线与相撞的最后一件事:存储Raycast命中信息

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评论解决。谢谢,所有。

+2

你的问题是什么? – Programmer

+0

你的代码是否在if语句中出现?你可以通过一个'BreakPoint'和调试来确认。 – Hristo

+0

@编程器,OP在释放模拟器后不希望'targetPos'值变为零。 @ Abdou023,你能不能分享更多的代码,我认为你甚至在用户发布模拟后会使用raycast,它可能会在'Physics.Raycast'中返回false,并在'else'块中将'targetPos'设置为'Vector3.zero'。 –

回答

1

我想你甚至用户发布的模拟可能为Physics.Raycast被返回false和else块设置targetPosVector3.zero后使用光线投射。

只有当用户正在使用模拟信号时,才能将条件发送给raycast,这将在用户释放模拟信号后停止执行不必要的其他模块,并且targetPos将保留其正确的值。