- Home /
 
               Question by 
               Art1511 · Jun 30, 2014 at 09:35 PM · 
                movementplatformboxcollider  
              
 
              Bug in Moving Platform
My game have a player with this Physics Script:
 [RequireComponent (typeof(BoxCollider))]
 public class PlayerPhysics : MonoBehaviour {
     
     public LayerMask collisionMask;
     
     private BoxCollider colliders;
     private Vector3 s;
     private Vector3 c;
     
     private float skin = .005f;
     
     [HideInInspector]
     public bool grounded;
     
     Ray ray;
     RaycastHit hit;
     
     void Start() {
         colliders = GetComponent<BoxCollider>();
         s = colliders.size;
         c = colliders.center;
     }
     
     public void Move(Vector2 moveAmount) {
         
         float deltaY = moveAmount.y;
         float deltaX = moveAmount.x;
         Vector2 p = transform.position;
         
         // Check collisions above and below
         grounded = false;
         
         for (int i = 0; i<3; i ++) {
             float dir = Mathf.Sign(deltaY);
             float x = (p.x + c.x - s.x/2) + s.x/2 * i; // Left, centre and then rightmost point of collider
             float y = p.y + c.y + s.y/2 * dir; // Bottom of collider
             
             ray = new Ray(new Vector2(x,y), new Vector2(0,dir));
             Debug.DrawRay(ray.origin,ray.direction);
             if (Physics.Raycast(ray,out hit,Mathf.Abs(deltaY),collisionMask)) {
                 // Get Distance between player and ground
                 float dst = Vector3.Distance (ray.origin, hit.point);
                 
                 // Stop player's downwards movement after coming within skin width of a collider
                 if (dst > skin) {
                     deltaY = dst * dir + skin;
                 }
                 else {
                     deltaY = 0;
                 }
                 
                 grounded = true;
                 
                 break;
                 
             }
         }
         
         
         
         Vector2 finalTransform = new Vector2(deltaX,deltaY);
         
         transform.Translate(finalTransform);
     }
     
 }
And this is the Moving Platform Script:
 var pointB : Transform;
 private var pointA : Vector3;
 var speed = 1.0;
  
 function Start () {
     pointA = transform.position;
     while (true) {
         var i = Mathf.PingPong(Time.time * speed, 1);
         transform.position = Vector3.Lerp(pointA, pointB.position, i);
         yield;
     }
 }
 
So, when the player cross the platform, he follow down. Its like the platform does't have a Box Collider. I try many solutions that i find but nothing works.
               Comment
              
 
               
              Your answer
 
 
             Follow this Question
Related Questions
Box collider (with Rigidbody attached) gets stuck into another Box Collider 0 Answers
GameObject B does not collide with GameObject A 1 Answer
Simple Topdown Movement Problem 1 Answer
Sphere overlaps vertical box collider and stutters 1 Answer
Moving platform script makes my player unable to move 3 Answers
 koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                