- Home /
Linecast between character and camera doesn't ignoring Characters collider.
I want to make camera get position from collision WITH WALL (in order to see character when he stand back to a wall). In order of this I: 1) create a layer and give this layer to my character (and all its children object) 2) casts a line (Physics.Linecast) between camera and character with invert mask with this layer, which I make invert.
But instead of IGNORE the players collider (via layerMask), Linecast somehow MAKE A COLLISION WITH CHARACTER'S own collider give this position to the camera, disregarding an exception of its layer. I try the whole week but I don't know what to do =( Please somebody help me fix this problem via Linecast (or Raycast).
RaycastHit hit = new RaycastHit ();
int layerMask = 1 << 8;
layerMask = ~layerMask; //invert a bitmask - we want to collide against everything except layer 8
if (Physics.Linecast(lookAt.position, camTransform.position, out hit, layerMask))
{
Debug.Log (hit.point);
camTransform.position = hit.point;
}
Answer by mrpmorris · Aug 08, 2016 at 02:17 PM
Is your player assigned to layer 8? Have you tried projecting from a point just in front of your player instead? There is an example here - https://docs.unity3d.com/ScriptReference/Physics.Raycast.html
It also seems to suggest using Raycast will ignore colliders attached to the origin.
Yes, my player attached to 8 layer, I tired via Raycast but all the same(
Are you certain it is hitting part of your character? As a test, ins$$anonymous$$d of having layer$$anonymous$$ask as a local variable change it to a public member, like so
public layer$$anonymous$$ask : Layer$$anonymous$$ask;
Then in your code don't invert it, just pass it to Physics.RayCast - In the editor you can tick all the layers you want to detect. Play with those and see what happens.
Answer by ArisingHero029 · Feb 09, 2018 at 05:51 PM
Try Changing your layer mask to
Int whateveryourlayerpropertyis = LayerMask.GetMask("Name Of Your Layer");
then invert that and put it in.
whateveryourlayerpropertyis = -whateveryourlayerpropertyis;
i think this should work. i always use Get Mask for layers. It will always work.
Your answer
Follow this Question
Related Questions
Need to find a point along a linecast slightly closer to the origin than hit.point 1 Answer
How do i add a layer to a gameobject? 1 Answer
Make Certain Object's Raycasts Ignore Certain Colliders 0 Answers
Collider Is Touching Layers is not working... 1 Answer
Moving gameobject along terrain based on player movement using raycast 1 Answer