正文

游戲數(shù)學(xué)(4)

精通C#游戲編程 作者:(英)斯庫(kù)勒


 

DrawGraph函數(shù)有兩個(gè)參數(shù),一個(gè)是用于繪制圖的函數(shù),另一個(gè)是決定圖的顏色的顏色值。正弦和余弦是波形,將這兩個(gè)波形加起來,很容易產(chǎn)生有趣的新波形。通過使用匿名方法,可以創(chuàng)建一個(gè)新的波形函數(shù)。下面的代碼段創(chuàng)建了一個(gè)圖,將余弦和正弦加起來,并把結(jié)果縮小了一半。

DrawGraph(delegate(double value)

{

return (Math.Sin(value) + Math.Cos(value)) *0.5;

}, new Color(0.5f, 0.5f, 1, 1));

嘗試運(yùn)行下面的代碼段,然后觀察得到的結(jié)果。

DrawGraph(delegate(double value)

{

return (Math.Sin(value) + Math.Sin(value + value))*0.5;

}, new Color(0.5f, 0.5f, 1, 1));

這些圖看起來很有趣,但如果在游戲中沒有應(yīng)用,它們看上去就有點(diǎn)學(xué)術(shù)化。接下來,我們就使用這些函數(shù)來使精靈動(dòng)起來。

8.1.2  使用三角函數(shù)實(shí)現(xiàn)特殊效果

創(chuàng)建一個(gè)新的游戲狀態(tài)SpecialEffectsState。這個(gè)狀態(tài)將演示如何使用Text類以及剛才討論的正弦和余弦函數(shù)創(chuàng)建很酷的特效。

class SpecialEffectState : IGameObject

{

Font _font;

Text _text;

Renderer _renderer = new Renderer();

double _totalTime = 0;

public SpecialEffectState(TextureManager manager)

{

_font = new Font(manager.Get("font"), FontParser.Parse("font.fnt"));

_text = new Text("Hello", _font);

}

public void Update(double elapsedTime)

{

}

public void Render()

{

Gl.glClearColor(0.0f, 0.0f, 0.0f, 1.0f);

Gl.glClear(Gl.GL_COLOR_BUFFER_BIT);

_renderer.DrawText(_text);

_renderer.Render();

}

}

基本的狀態(tài)只是渲染出文本“Hello”。使用這個(gè)正弦值很容易使文本的透明度從0逐漸變化為1,然后又從1變化為0。這里使用的是文本,但是使用精靈或模型也一樣很簡(jiǎn)單。


上一章目錄下一章

Copyright ? 讀書網(wǎng) ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號(hào) 鄂公網(wǎng)安備 42010302001612號(hào)