Skip to content

Rendering nel Hud

Abbiamo già parlato brevemente di come renderizzare cose sulla Hud nelle pagine Concetti di Rendering di Base e Usare il Drawing Context, per cui in questa pagina ci concentreremo sull'evento HudRenderCallback e sul parametro deltaTick.

HudRenderCallback

L'evento HudRenderCallback - fornito dall'API di Fabric - viene chiamato ogni frame, e viene usato per renderizzare cose sul HUD.

Per registrarsi a questo evento, puoi semplicemente chiamare HudRenderCallback.EVENT.register e passare una lambda che prende come parametri un DrawContext e un float (deltaTick).

Il contesto di disegno può essere usato per accedere a varie utilità di rendering fornite dal gioco, e per accedere allo stack di matrici puro.

Dovresti dare un'occhiata alla pagina Usare il Contesto di Disegno per saperne di più riguardo al contesto di disegno.

DeltaTick

Il parametro deltaTick è il tempo trascorso dall'ultimo frame, in secondi. Questo può essere usato per fare animazioni e altri effetti basati sul tempo.

Esempio: Interpolare un Colore nel Tempo

Immagina di voler interpolare linearmente un colore nel tempo. Puoi usare il parametro deltaTick per farlo.

java
HudRenderCallback.EVENT.register((context, tickDelta) -> {
	int color = 0xFFFF0000; // Red
	int targetColor = 0xFF00FF00; // Green

	// Total tick delta is stored in a field, so we can use it later.
	totalTickDelta += tickDelta;

	// "lerp" simply means "linear interpolation", which is a fancy way of saying "blend".
	float lerpedAmount = MathHelper.abs(MathHelper.sin(totalTickDelta / 50F));
	int lerpedColor = ColorHelper.Argb.lerp(lerpedAmount, color, targetColor);

	// Draw a square with the lerped color.
	// x1, x2, y1, y2, z, color
	context.fill(0, 0, 100, 100, 0, lerpedColor);
});