danaugrs 7 anni fa
parent
commit
8db37ed6bf
2 ha cambiato i file con 8 aggiunte e 6 eliminazioni
  1. 3 5
      physics/narrowphase.go
  2. 5 1
      physics/object/body.go

+ 3 - 5
physics/narrowphase.go

@@ -106,9 +106,7 @@ func (n *Narrowphase) Resolve(bodyA, bodyB *object.Body) (bool, []*equation.Cont
 
 			log.Error("contact.Depth: %v", contact.Depth)
 
-			//contactEq.SetRA(contact.Point.Clone().Sub(&posA).MultiplyScalar(1-contact.Depth))//.MultiplyScalar(2))
-			contactEq.SetRA(contact.Normal.Clone().MultiplyScalar(contact.Depth - 0).Add(&contact.Point).Sub(&posA))
-			//contactEq.SetRA(contact.Normal.MultiplyScalar(-contact.Depth*10).Add(&contact.Point).Sub(&posA))
+			contactEq.SetRA(contact.Normal.Clone().MultiplyScalar(contact.Depth).Add(&contact.Point).Sub(&posA))
 			contactEq.SetRB(contact.Point.Clone().Sub(&posB))
 			contactEqs = append(contactEqs, contactEq)
 
@@ -116,8 +114,8 @@ func (n *Narrowphase) Resolve(bodyA, bodyB *object.Body) (bool, []*equation.Cont
 			// We will create average friction equations later based on all contacts
 			// TODO
 			if !n.enableFrictionReduction {
-				//fEq1, fEq2 := n.createFrictionEquationsFromContact(contactEq)
-				//frictionEqs = append(frictionEqs, fEq1, fEq2)
+				fEq1, fEq2 := n.createFrictionEquationsFromContact(contactEq)
+				frictionEqs = append(frictionEqs, fEq1, fEq2)
 			}
 		}
 

+ 5 - 1
physics/object/body.go

@@ -314,7 +314,7 @@ func (b *Body) SetMass(mass float32) {
 		b.invMass = 1.0 / b.mass
 	} else {
 		b.invMass = 0
-		b.SetBodyType(Static)
+		b.bodyType = Static
 	}
 }
 
@@ -365,6 +365,10 @@ func (b *Body) SleepState() BodySleepState {
 
 func (b *Body) SetBodyType(bt BodyType) {
 
+	if bt == Static {
+		b.mass = 0
+		b.invMass = 0
+	}
 	b.bodyType = bt
 }