public override void Setup() { physXPosition.FromVector(transform.position); physXRotation.FromQuaternion(transform.rotation); IntPtr physXTransform = PhysXLib.CreateTransform(physXPosition, physXRotation); _position = transform.position; _rotation = transform.rotation; physXBody = PhysXLib.CreateDynamicRigidBody(physXTransform); // PhysXLib.RegisterCollisionEnterCallback(ProcessCollisionEnterEvents, physXDynamicRigidBody); // PhysXLib.RegisterCollisionStayCallback(ProcessCollisionStayEvents, physXDynamicRigidBody); // PhysXLib.RegisterCollisionExitCallback(ProcessCollisionExitEvents, physXDynamicRigidBody); PhysXLib.SetRigidBodyFlag(physXBody, PhysXLib.PhysXRigidBodyFlag.eKINEMATIC, kinematic); if (kinematic) { PhysXLib.SetRigidBodyDominanceGroup(physXBody, 1); } PhysXLib.SetRigidBodyMaxDepenetrationVelocity(physXBody, Physics.defaultMaxDepenetrationVelocity); PhysXLib.SetRigidBodyMaxLinearVelocity(physXBody, maxVelocity); wheels = new List <PhysXWheelCollider>(GetComponentsInChildren <PhysXWheelCollider>(true)); PhysXCollider[] colliders = GetComponentsInChildren <PhysXCollider>(true); if (wheels.Count > 0) { vehicleId = currentVehicleId; currentVehicleId++; } foreach (PhysXCollider collider in colliders) { collider.Setup(this, vehicleId); } //Debug.Log(vehicleId); PhysXLib.SetRigidBodyMassAndInertia(physXBody, mass, new PhysXVec3(Vector3.zero)); PhysXLib.SetRigidBodyDamping(physXBody, linearDamping, angularDamping); }