Skip to content

Collisions problem #28

@mcfly722

Description

@mcfly722

Hello, guys
I'm trying to use your engine in my own game and found that the are no collisions between bodies occurs at all.
I created a small test with your code from cpp_compliance_test.go, and I see that there the same situation.

This is a small test - a small dinamic circle body above ground Edge. Standard gravity (0,-10), and you can see that this circle body fall down and pass through the edge to negative Y axis.

Is there something wrong in this code that I copied from your cpp_compliance_test.go, or collisions between dynamic/static are not supported yet?

package main

import (
	"fmt"
	"testing"

	"github.com/ByteArena/box2d"
)

func TestBox2dCollisions(t *testing.T) {

	world := box2d.MakeB2World(box2d.MakeB2Vec2(0, -10))

	// ground body (from cpp_compliance_test.cpp)
	{
		bd := box2d.MakeB2BodyDef()
		ground := world.CreateBody(&bd)
		shape := box2d.MakeB2EdgeShape()
		shape.Set(box2d.MakeB2Vec2(-20.0, 0.0), box2d.MakeB2Vec2(20.0, 0.0))
		ground.CreateFixture(&shape, 0.0)
	}

	// circle character (from cpp_compliance_test.cpp)
	bd := box2d.MakeB2BodyDef()
	bd.Position.Set(0, 10.0)
	bd.Type = box2d.B2BodyType.B2_dynamicBody
	bd.FixedRotation = true
	bd.AllowSleep = false

	body := world.CreateBody(&bd)

	shape := box2d.MakeB2CircleShape()
	shape.M_radius = 0.5

	fd := box2d.MakeB2FixtureDef()
	fd.Shape = &shape
	fd.Density = 200.0
	body.CreateFixtureFromDef(&fd)

	// Prepare for simulation. Typically we use a time step of 1/60 of a
	// second (60Hz) and 10 iterations. This provides a high quality simulation
	// in most game scenarios.
	timeStep := 1.0 / 60.0
	velocityIterations := 8
	positionIterations := 3

	for i := 0; i < 100; i++ {
		// Instruct the world to perform a single step of simulation.
		// It is generally best to keep the time step and iterations fixed.
		//runtime.Breakpoint()
		world.Step(timeStep, velocityIterations, positionIterations)
		fmt.Printf("circle character coordinates: %v,%v\n", body.GetPosition().X, body.GetPosition().Y)
	}
}

Output is:

=== RUN   TestBox2dCollisions
circle character coordinates: 0,9.997222222222222
circle character coordinates: 0,9.991666666666665
circle character coordinates: 0,9.983333333333333
circle character coordinates: 0,9.972222222222221
circle character coordinates: 0,9.958333333333332
........etc
........
circle character coordinates: 0,1.2222222222222219
circle character coordinates: 0,0.9999999999999999
circle character coordinates: 0,0.7750000000000001
circle character coordinates: 0,0.5472222222222226
circle character coordinates: 0,0.3166666666666673
circle character coordinates: 0,0.08333333333333426
circle character coordinates: 0,-0.15277777777777657
circle character coordinates: 0,-0.39166666666666516
circle character coordinates: 0,-0.6333333333333315
circle character coordinates: 0,-0.8777777777777757
circle character coordinates: 0,-1.1249999999999976
circle character coordinates: 0,-1.3749999999999973
circle character coordinates: 0,-1.6277777777777747
circle character coordinates: 0,-1.8833333333333298
circle character coordinates: 0,-2.1416666666666626
circle character coordinates: 0,-2.4027777777777732
circle character coordinates: 0,-2.6666666666666616```

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions