package main import ( "time" rl "github.com/gen2brain/raylib-go/raylib" ) const MAXPOINTS = 100 func spawnParticlesAsGrid(particleWidth float32, particleHeight float32, particleColumnCount int, particleRowCount int, particleList *[MAXPOINTS]rl.Vector2) { var particleLeftCornerPos rl.Vector2 = rl.Vector2{500, 300} for y := 0; y < (particleColumnCount); y++ { for x := 0; x < particleRowCount; x++ { newParticle := rl.NewVector2(particleWidth*(float32(x)/float32(particleRowCount))+particleLeftCornerPos.X, particleHeight*(float32(y)/float32(particleColumnCount))+particleLeftCornerPos.Y) particleList[y*particleRowCount+x] = newParticle } } } func main() { rl.InitWindow(1200, 800, "raylib [core] example - basic window") defer rl.CloseWindow() rl.SetTargetFPS(60) rl.BeginDrawing() rl.WaitTime(1) rl.ClearBackground(rl.RayWhite) rl.DrawText("Congrats! You created your first window!", 190, 200, 20, rl.LightGray) rl.EndDrawing() var particleWidth float32 = 200 var particleHeight float32 = 200 var particleColumnCount int = 10 var particleRowCount int = 10 var particleCount int = particleRowCount * particleColumnCount var particleRadius float32 = 5 var particleColor rl.Color = rl.Black var gravity rl.Vector2 = rl.Vector2{0, 10} //var stepSize float32 = 10 var particleSpeed rl.Vector2 = rl.Vector2{0, -100} //pixel pro zeitinkrement var timeIncrement float32 = 0.01 var particleList = [MAXPOINTS]rl.Vector2{} spawnParticlesAsGrid(particleWidth, particleHeight, particleColumnCount, particleRowCount, &particleList) for j := float32(0); j < 20; { rl.BeginDrawing() var startTime time.Time = time.Now() for i := 0; i < particleCount; i++ { rl.DrawCircleV(particleList[i], particleRadius, particleColor) particleList[i] = rl.Vector2Add( particleList[i], rl.Vector2Scale(particleSpeed, timeIncrement)) } rl.EndDrawing() //fmt.Println(particleList) particleSpeed = rl.Vector2Add( particleSpeed, rl.Vector2Scale(gravity, timeIncrement)) j += timeIncrement var endTime time.Time = time.Now() var elapsed time.Duration = endTime.Sub(startTime) var waitTime float64 = float64(timeIncrement) - float64(elapsed*time.Second) rl.WaitTime(waitTime) rl.ClearBackground(rl.RayWhite) } }