频道栏目
读书频道 > 软件开发 > C# > 精通C#游戏编程
8.3.2 矩形
2012-08-01 16:39:06     我来说两句
收藏   我要投稿

本文所属图书 > 精通C#游戏编程

本书通过引导读者创建一个基本的游戏,展示了如何使用c#和OpenGL一步步地开发出简单、整洁而可靠的代码。C#是一种高级编程语言,而OpenGL是业界显示图形最常用的方法。本书概述了创建优秀游戏项目时采用的方法和...  立即去当当网订购

矩形的相交测试代码不需要非常完善。我们需要的矩形只有按钮,而按钮总是会与轴对齐。这样,代码就比处理任意对齐的矩形时简单了很多。

如果点在矩形左边的右侧,右边的左侧,上边的下侧,底边的上侧,那么该点在矩形内。可以采取与圆的示例相似的方法从视觉上显示矩形与点的关系。

class RectangleIntersectionState : IGameObject

{

Input _input;

Rectangle _rectangle = new Rectangle(new Vector(0,0,0), new Vector

(200, 200,0));

public RectangleIntersectionState(Input input)

{

_input = input;

}

 

#region IGameObject Members

 

public void Update(double elapsedTime)

{

if (_rectangle.Intersects(_input.MousePosition))

{

_rectangle.Color = new Color(1, 0, 0, 1);

}

else

{

// If the circle's not intersected turn it back to white.

_rectangle.Color = new Color(1, 1, 1, 1);

}

}

 

public void Render()

{

_rectangle.Render();

}

#endregion

}
 

这个状态与之前关于圆的示例的状态很类似。记住,要使它作为默认状态加载。矩形本身和圆一样,是使用线循环构成的。

public class Rectangle

{

Vector BottomLeft { get; set;}

Vector TopRight { get; set; }

Color _color = new Color(1, 1, 1, 1);

public Color Color

{

get { return _color; }

set { _color = value; }

}

 

public Rectangle(Vector bottomLeft, Vector topRight)

{

BottomLeft = bottomLeft;

TopRight = topRight;

}

 

public void Render()

{

Gl.glColor3f(_color.Red, _color.Green, _color.Blue);

Gl.glBegin(Gl.GL_LINE_LOOP);

{

Gl.glVertex2d(BottomLeft.X, BottomLeft.Y);

Gl.glVertex2d(BottomLeft.X, TopRight.Y);

Gl.glVertex2d(TopRight.X, TopRight.Y);

Gl.glVertex2d(TopRight.X, BottomLeft.Y);

}

Gl.glEnd();

}

}

rectangle类可以创建和绘制矩形。唯一还缺少的函数是最重要的intersect函数。

public bool Intersects(Point point)

{

if (

point.X >= BottomLeft.X &&

point.X <= TopRight.X &&

point.Y <= TopRight.Y &&

point.Y >= BottomLeft.Y)

{

return true;

}

return false;

}

运行程序,将光标移入矩形。与圆的示例一样,矩形会变成红色,表明相交性代码起作用了。


您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:8.3.1 圆
下一篇:8.4 补间
相关文章
图文推荐
排行
热门
最新书评
特别推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站