void Start() { LayerMask mask = LayerMaskExtensions.Create("Ignore Raycast", "TransparentFX", "Water"); Debug.Log(mask.MaskToString()); //prints out Ignore Raycast, TransparentFX, Water mask = mask.RemoveFromMask("TransparentFX"); Debug.Log(mask.MaskToString()); //prints out Ignore Raycast, Water mask = mask.AddToMask("TransparentFX"); Debug.Log(mask.MaskToString()); //prints out Ignore Raycast, TransparentFX, Water Debug.Log(mask.Inverse().MaskToString()); //prints out everything except Ignore Raycast, TransparentFX, Water }
public override void onTarget() { Vector2 target2 = getTarget (); Vector3 target = new Vector3(target2.x,0,target2.y); path = grid.findPath (this.getLegs().transform.position,target); if (path != null) { current = path.First; LayerMask mask = new LayerMask(); mask.AddToMask("Buildings"); while(current != null && !Physics.Linecast(getLegs().transform.position, current.Value.toVector3())) { //Debug.Log("BLAH"); //Debug.DrawLine(getLegs().transform.position, current.Value.toVector3(), Color.green); current = current.Next; } } else { current = null; } }
public override Vector2 _getDesiredVelocity() { onTarget (); if (current == null) { //Debug.Log ("Using aux steering!"); auxiliarySteering.setTarget(this.getTarget()); return auxiliarySteering.getDesiredVelocity(); } if (grid.gridSquareFromVector3(this.getLegs ().transform.position) == current.Value) { if (current.Next == null) { current = null; this.setInternalWeight(1.0f); return Vector2.zero; } current = current.Next; LayerMask mask = new LayerMask(); mask.AddToMask("Buildings"); while(current != null && !Physics.Linecast(getLegs().transform.position, current.Value.toVector3())) { if (current.Next == null) { current = null; this.setInternalWeight(1.0f); return Vector2.zero; } current = current.Next; } } Vector3 target3 = current.Value.toVector3(); Vector2 target = new Vector2(target3.x,target3.z); Vector2 myPos = new Vector2(this.getLegs().transform.position.x,this.getLegs().transform.position.z); return (target - myPos).normalized * this.getLegs().equilibrium; }
public virtual void SetDestination() { if (!rigid.useGravity) { destination = initPosition + Random.onUnitSphere * Random.value * patrolRange; return; } do { destination = initPosition + (Random.insideUnitCircle * patrolRange).XYToXZ(); RaycastHit hit; if (Physics.Raycast(destination.SetY(trs.position.y + patrolRange), Vector3.down, out hit, Mathf.Infinity, whatIsLand.AddToMask(whatIsWater))) { bool shouldReturn = true; if (!patrolLand && LayerMaskExtensions.MaskContainsLayer(whatIsLand, hit.collider.gameObject.layer)) { shouldReturn = false; } else if (!patrolWater && LayerMaskExtensions.MaskContainsLayer(whatIsWater, hit.collider.gameObject.layer)) { shouldReturn = false; } if (shouldReturn) { return; } } } while (true); }
public static LayerMask RemoveFromMask(this LayerMask layerMask, params int[] layerNumbers) { layerMask = layerMask.Inverse(); layerMask = layerMask.AddToMask(layerNumbers); return(layerMask.Inverse()); }
public static LayerMask RemoveFromMask(this LayerMask layerMask, params string[] layerNames) { layerMask = layerMask.Inverse(); layerMask = layerMask.AddToMask(layerNames); return(layerMask.Inverse()); }
public static LayerMask AddToMask(this LayerMask original, LayerMask layerMask) { return(original.AddToMask(layerMask.MaskToNames())); }