Question by 
               NechyporukEvgen · Dec 11, 2015 at 11:31 PM · 
                collisionraycastvector3raycastingcapsulecollider  
              
 
              I need to make rayscast in four edge areas depending on the direction
Hey. I need to make rayscast in four edge areas depending on the direction. One more, the length of the beam must be sufficient for the collision with the capsule. It is necessary to check the ray collision with other obstacles as he tends to the capsule. Please advise how to implement optimized. Thanks  Now I realize this is not optimized in order to work. this my bad implement
 Now I realize this is not optimized in order to work. this my bad implement
 Transform t_player = playerCapsuleCollider.transform;
 
             Vector3 playerCapsuleCenter = t_player.TransformPoint(playerCapsuleCollider.center);
 
             float playerCollRad = playerCapsuleCollider.radius;
             float playerCollHalfH = playerCapsuleCollider.height * 0.5f;
 
             Vector3 heading = playerCapsuleCenter - t_enemy.position;
             float distance = heading.magnitude;
             Vector3 direction = heading.normalized;
 
             Vector3 directionHEdge = Vector3.Cross(direction, t_player.up).normalized; // l, r edge
             Vector3 directionVEdge = Vector3.Cross(direction, -directionHEdge).normalized; // u, d edge
 
             float rayHLeng = distance - playerCollRad - 0.1f; // l, r edge - this distance not correct. need calculate after update each direction
             float rayVLeng = distance - playerCollHalfH - 0.1f; // u, d edge - this distance not correct. need calculate after update each direction
 
             RaycastHit hitInfo;
             if (Physics.Raycast(t_enemy.position, direction, out hitInfo, rayHLeng, lightLayers)) // center 
             {
 
                 Debug.DrawLine(t_enemy.position, hitInfo.point, Color.red);
                 direction = ((playerCapsuleCenter + directionHEdge * playerCollRad) - t_enemy.position).normalized;
 
                 if (Physics.Raycast(t_enemy.position, direction, out hitInfo, rayHLeng, lightLayers)) // right edge
                 {
 
                     Debug.DrawLine(t_enemy.position, hitInfo.point, Color.green);
                     direction = ((playerCapsuleCenter + -directionHEdge * playerCollRad) - t_enemy.position).normalized;
 
                     if (Physics.Raycast(t_enemy.position, direction, out hitInfo, rayHLeng, lightLayers)) // left edge
                     {
 
                         Debug.DrawLine(t_enemy.position, hitInfo.point, Color.blue);
                         direction = ((playerCapsuleCenter + directionVEdge * playerCollHalfH) - t_enemy.position).normalized;
 
                         if (Physics.Raycast(t_enemy.position, direction, out hitInfo, rayVLeng, lightLayers)) // up edge
                         {
 
                             Debug.DrawLine(t_enemy.position, hitInfo.point, Color.magenta);
                             direction = ((playerCapsuleCenter + -directionVEdge * playerCollHalfH) - t_enemy.position).normalized;
 
                             if (Physics.Raycast(t_enemy.position, direction, out hitInfo, rayVLeng, lightLayers)) // down edge
                             {
 
                                 Debug.DrawLine(t_enemy.position, hitInfo.point, Color.yellow);
                                 continue; // collision detect before ray hit player
                             }
                         }
                     }
                 }
             }
 
                 
                13123.png 
                (114.5 kB) 
               
 
              
               Comment
              
 
               
              Your answer
 
 
             Follow this Question
Related Questions
Raycasting not detecting collider 0 Answers
Raycast not always detecting floor 1 Answer
Raycast does not seem to properly detect object it hit 0 Answers
I can't get RayCast to report the collider I want. 1 Answer
Blink, Dash, Raycasting 0 Answers
 koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                