Exemplo n.º 1
0
func PäivitäAlus(dt float64, ohjaimet Ohjaimet) {

	const (
		moottorinVahvuus = 0.8
		ratinVahvuus     = 4
	)

	kulmat[alus.ID] += ohjaimet.Ratti * ratinVahvuus * dt

	if ohjaimet.Kaasu {
		muutos := vec2.Rotation(kulmat[alus.ID]).Transform(vec2.Vector{0, moottorinVahvuus * dt})

		nopeus := &nopeudet[alus.ID]
		*nopeus = nopeus.Plus(muutos)

		muodot[alus.LiekinID] = Liekki
	} else {
		muodot[alus.LiekinID] = Muoto{}
	}

	alus.AikaAseenLaukeamisesta += dt
	if ohjaimet.Liipaisin && alus.AikaAseenLaukeamisesta > 0.4 {
		TeeLuoti(alus.ID)
		alus.AikaAseenLaukeamisesta = 0
	}
}
Exemplo n.º 2
0
func TeeLuoti(alusID int) {
	aluksenRotaatio := vec2.Rotation(kulmat[alusID])
	keulanSuunta := aluksenRotaatio.Transform(vec2.Vector{0, 1})
	id := TeeEsine(paikat[alusID], keulanSuunta.Plus(nopeudet[alusID]), 0)

	mid := muodolle.Varaa(id)
	muodot[mid] = Muoto{
		Pisteet: []vec2.Vector{{0, 0}, {0, 0.04}},
		Väri:    Väri{1, 1, 1},
		Muunnos: aluksenRotaatio,
	}

	eliniät[eliniälle.Varaa(id)] = 1
}
Exemplo n.º 3
0
func Piirrä() {
	for i, muoto := range muodot {

		muunnos := vec2.Rotation(kulmat[muodolle.Vanhemmat[i]]).Mul(muoto.Muunnos)
		muunnos = vec2.Translation(paikat[muodolle.Vanhemmat[i]]).Mul(muunnos)

		muunnetutPisteet := make([]vec2.Vector, len(muoto.Pisteet))
		for j, piste := range muoto.Pisteet {
			muunnetutPisteet[j] = muunnos.Transform(piste)
		}

		asetaVäri(muoto.Väri)
		for _, siirto := range []vec2.Vector{{0, 0}, {0, 2}, {0, -2}, {2, 0}, {-2, 0}} {
			piirräPisteetSiirrolla(muunnetutPisteet, siirto)
		}
	}
}
Exemplo n.º 4
0
func TestSpriteDrawer(_ *testing.T) {

	t := NewTestbed("displays rotating test image")

	spritedrawer := NewSpriteDrawer(t.window, 1)

	texcoord := Upload(t.image, spritedrawer.Texture, 0, 0, 0)
	sprite := Sprite{Image: texcoord}

	x := 0.0

	t.UntilClose(func() {

		transform := vec2.Translation(vec2.Vector{-float64(t.image.Rect.Max.X) / 2, -float64(t.image.Rect.Max.Y) / 2})
		transform = vec2.Rotation(x).Mul(transform)
		x += 0.01
		sprite.Transform = transform.To32()

		spritedrawer.Draw([]Sprite{sprite})
	})
}
Exemplo n.º 5
0
	"github.com/joonazan/vec2"
)

var alus Alus

type Alus struct {
	ID, LiekinID           int
	AikaAseenLaukeamisesta float64
}

var kolmionPisteet = []vec2.Vector{{0.1, 0}, {-0.1, 0}, {0, 0.2}, {0.1, 0}}

var Liekki = Muoto{
	Pisteet: kolmionPisteet,
	Väri:    Väri{1, 0.7, 0.3},
	Muunnos: vec2.Translation(vec2.Vector{0, -0.09}).Mul(vec2.Scale(0.4, 0.4).Mul(vec2.Rotation(math.Pi))),
}

func TeeAlus() {
	alus.ID = TeeEsine(vec2.Vector{}, vec2.Vector{}, 0)

	id := muodolle.Varaa(alus.ID)
	muodot[id] = Muoto{
		Pisteet: kolmionPisteet,
		Väri:    Väri{1, 1, 1},
		Muunnos: vec2.Translation(vec2.Vector{0, -0.06}),
	}

	alus.LiekinID = muodolle.Varaa(alus.ID)
}