【发布时间】:2022-01-20 09:06:25
【问题描述】:
我正在制作一把抓枪,如果图层为LightWeight,则将对象拉向玩家,如果图层为Ground,则将玩家拉向对象
int groundLayer_mask = LayerMask.GetMask("Ground");
int lightWeightLayer_mask = LayerMask.GetMask("LightWeight");
//Shoots a raycast, and only works if layer is Ground
if (Physics.Raycast(Shoulder.transform.position, cam.transform.forward, out raycastHit, float.PositiveInfinity, groundLayer_mask))
{
//Hit Something
debugHitpointTransform.position = raycastHit.point;
hookshotPosition = raycastHit.point;
hookShotSize = 0f;
HookShotTransform.gameObject.SetActive(true);
HookShotTransform.localScale = Vector3.zero;
layerHit = 0;
state = State.HookShotThrown;
}
//Shoots a raycast, and only works if layer is LightWeight
else if (Physics.Raycast(Shoulder.transform.position, cam.transform.forward, out raycastHit, float.PositiveInfinity, lightWeightLayer_mask))
{
//Hit Something
debugHitpointTransform.position = raycastHit.point;
hookshotPosition = raycastHit.point;
hookShotSize = 0f;
HookShotTransform.gameObject.SetActive(true);
HookShotTransform.localScale = Vector3.zero;
layerHit = 1;
state = State.HookShotThrown;
}
但是,如果我朝具有Ground 层的对象的方向看,即使有一个具有LightWeight 层的对象比具有Ground 的对象更接近,它也适用于具有Ground 的对象,因为我先有它的if语句。有什么方法可以让它不通过前面的对象只是因为第一个如果正在寻找后面的对象,或者让它优先考虑前面的对象?
【问题讨论】:
标签: c# unity3d if-statement raycasting