2016-04-04 39 views
0

Unity2D çarpışma algılamayla ilgili bir sorun yaşıyorum. Unity'ye yeniyim ve bunu düzeltmek için bir eğiticiyi takip ediyorum. Nesneleri ve katmanları doğru şekilde oluşturdum ancak bu kodla ilgili bir sorun yaşıyorum. Çarpışma maskesi ile raycast kullanıyorum. Hem Layer'da bir bit maskesi dönüşümü yapmayı denedim ama bu da işe yaramıyor gibi görünmüyor. Bu sorunun nedenine dair herhangi bir fikri olan var mı? İşte kodum:Unity2D Çarpışma Algılama

void VerticalCollisions(ref Vector3 velocity) { 
    float directionY = Mathf.Sign (velocity.y); 
    float rayLength = Mathf.Abs (velocity.y) + skinWidth; 
    for (int i = 0; i < verticalRayCount; i ++) { 
     Vector2 rayOrigin = (directionY == -1)?raycastOrigins.bottomLeft:raycastOrigins.topLeft; 
     rayOrigin += Vector2.right * (verticalRaySpacing * i + velocity.x); 

     RaycastHit2D hit = Physics2D.Raycast(rayOrigin, Vector2.up * directionY, rayLength, collisionMask); 

     Debug.DrawRay(rayOrigin, Vector2.up * directionY * rayLength,Color.red); 

     if (hit) { 
      velocity.y = (hit.distance - skinWidth) * directionY; 
      rayLength = hit.distance; 
     } 
    } 
} 
+0

Sorun nedir? Raycast hiç çarpışana çarpmıyor mu? –

cevap

0

Kodunuzda ne var? Neyse, bu çarpışmaların hiç kod yazmadan çalışmasını sağlayabilirsiniz. Haritalarımı Döşemeli olarak yaptım, sonunda harita ile çarpışmak istediğim parçaları oyuncuyla doldurdum, Unity 2D'ye dönüştürdüm, harita kesitinde sütunlar işaretine büründü, rengi oluşturup oluşturdum bir rigidbody2d. Şerefe!

İlgili konular