在我的游戏中,玩家使用虚拟模拟物来瞄准特定物体,当他释放模拟角色时,角色应朝向该物体移动。 我想在变量中存储该对象的位置(更像是玩家应该根据对象的位置移动的方向),但前提是它只是光线碰撞的最后一个东西:
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评论解决。谢谢,所有。
答案 0 :(得分:1)
我认为即使在用户发布了Physics.Raycast
可能返回false并在targetPos
块中将Vector3.zero
设置为else
的模拟后,我也在使用raycast。
只有当用户使用模拟时,您才可以将条件设置为光线投射,这将禁止在用户释放模拟后执行不必要的其他模块,targetPos
将保留其正确的值。