正文

游戏数学(4)

精通C#游戏编程 作者:(英)斯库勒


 

DrawGraph函数有两个参数,一个是用于绘制图的函数,另一个是决定图的颜色的颜色值。正弦和余弦是波形,将这两个波形加起来,很容易产生有趣的新波形。通过使用匿名方法,可以创建一个新的波形函数。下面的代码段创建了一个图,将余弦和正弦加起来,并把结果缩小了一半。

DrawGraph(delegate(double value)

{

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

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

尝试运行下面的代码段,然后观察得到的结果。

DrawGraph(delegate(double value)

{

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

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

这些图看起来很有趣,但如果在游戏中没有应用,它们看上去就有点学术化。接下来,我们就使用这些函数来使精灵动起来。

8.1.2  使用三角函数实现特殊效果

创建一个新的游戏状态SpecialEffectsState。这个状态将演示如何使用Text类以及刚才讨论的正弦和余弦函数创建很酷的特效。

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();

}

}

基本的状态只是渲染出文本“Hello”。使用这个正弦值很容易使文本的透明度从0逐渐变化为1,然后又从1变化为0。这里使用的是文本,但是使用精灵或模型也一样很简单。


上一章目录下一章

Copyright © 读书网 www.dushu.com 2005-2020, All Rights Reserved.
鄂ICP备15019699号 鄂公网安备 42010302001612号