fix view port rendering to include
All checks were successful
Dynamic Branch Deploy / build-and-deploy (push) Successful in 7m1s
All checks were successful
Dynamic Branch Deploy / build-and-deploy (push) Successful in 7m1s
This commit is contained in:
@@ -688,54 +688,39 @@ func GetFloorYFromHeight(screenHeight int) float64 {
|
||||
return floorY
|
||||
}
|
||||
|
||||
// GetScale gibt den Scale-Faktor zurück um die Spielwelt an den Bildschirm anzupassen
|
||||
// Auf Mobile: Scale < 1.0 (rauszoomen, damit mehr sichtbar ist)
|
||||
// Auf Desktop: Scale = 1.0 (normale Größe)
|
||||
// GetScale gibt den Scale-Faktor zurück um die Spielwelt an den Bildschirm anzupassen.
|
||||
// Die Scale ist proportional zur Bildschirmhöhe relativ zur Referenz-Auflösung (720p),
|
||||
// damit auf jedem Gerät dieselbe Menge Spielwelt sichtbar ist wie auf dem PC.
|
||||
func GetScale() float64 {
|
||||
_, h := ebiten.WindowSize()
|
||||
if h == 0 {
|
||||
h = ScreenHeight
|
||||
}
|
||||
|
||||
// Mobile Geräte (kleine Bildschirme): Rauszoomen für bessere Sicht
|
||||
if h <= 400 {
|
||||
// Sehr kleine Bildschirme: 0.7x Scale (30% rauszoomen)
|
||||
return 0.7
|
||||
} else if h <= 600 {
|
||||
// Mittlere Bildschirme: 0.85x Scale (15% rauszoomen)
|
||||
return 0.85
|
||||
}
|
||||
|
||||
// Desktop/große Bildschirme: Normale Größe
|
||||
return 1.0
|
||||
return GetScaleFromHeight(h)
|
||||
}
|
||||
|
||||
// GetScaleFromHeight - Scale mit expliziter Höhe
|
||||
// GetScaleFromHeight - Scale proportional zur Bildschirmhöhe.
|
||||
// scale = screenHeight / 720 (Referenz), maximal 1.0.
|
||||
func GetScaleFromHeight(screenHeight int) float64 {
|
||||
h := screenHeight
|
||||
if h == 0 {
|
||||
h = ScreenHeight
|
||||
}
|
||||
|
||||
if h <= 400 {
|
||||
return 0.7
|
||||
} else if h <= 600 {
|
||||
return 0.85
|
||||
scale := float64(h) / float64(ScreenHeight)
|
||||
if scale > 1.0 {
|
||||
scale = 1.0
|
||||
}
|
||||
|
||||
return 1.0
|
||||
return scale
|
||||
}
|
||||
|
||||
// WorldToScreenY konvertiert Server-Welt-Y-Koordinate zu Bildschirm-Y-Koordinate
|
||||
// Nimmt die tatsächliche Bildschirmhöhe als Parameter (wichtig für WASM!)
|
||||
// WorldToScreenYWithHeight konvertiert Welt-Y zu Bildschirm-Y.
|
||||
// Skaliert die Y-Achse genauso wie die X-Achse, damit das Seitenverhältnis
|
||||
// der Spielwelt auf allen Geräten gleich bleibt.
|
||||
func WorldToScreenYWithHeight(worldY float64, screenHeight int) float64 {
|
||||
// Server arbeitet mit festen Koordinaten (Boden bei Y=540 für 720px Referenz)
|
||||
// Client will Boden dynamisch positionieren
|
||||
serverFloorY := float64(RefFloorY) // Server-Boden (540 bei 720px)
|
||||
clientFloorY := GetFloorYFromHeight(screenHeight) // Client-Boden (dynamisch)
|
||||
yOffset := clientFloorY - serverFloorY // Verschiebung (z.B. 620 - 540 = +80px nach unten)
|
||||
|
||||
return worldY + yOffset
|
||||
viewScale := GetScaleFromHeight(screenHeight)
|
||||
// Boden (Y=540) soll am unteren Bildschirmrand erscheinen (canvasH - 100).
|
||||
floorScreenY := float64(screenHeight) - 100.0
|
||||
return (worldY-float64(RefFloorY))*viewScale + floorScreenY
|
||||
}
|
||||
|
||||
func isHit(x, y, w, h int) bool {
|
||||
|
||||
Reference in New Issue
Block a user