| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 727 人关注过本帖
标题:请教前辈 蛋疼的问题啊
只看楼主 加入收藏
宫郎
Rank: 1
等 级:新手上路
帖 子:4
专家分:3
注 册:2011-10-9
收藏
 问题点数:0 回复次数:3 
请教前辈 蛋疼的问题啊
做了一个类似泡泡堂的游戏
下面的代码
 public bool IsMove(GameRole role)
            {
                int newX = role.X;
                int newY = role.Y;
                //前进一步,记录改变的坐标点
                switch (role.direction)
                {
                    case Direction.Down:
                        newY += role.Speed;
                        break;
                    case Direction.Left:
                        newX -= role.Speed;
                        break;
                    case Direction.Right:
                        newX += role.Speed;
                        break;
                    case Direction.Up:
                        newY -= role.Speed;
                        break;
                }
                //窗体临界点检测
                if (newX < 0 || newX > (UtilityResource.MapCols - 1) * UtilityResource.GridSize || newY < 0 || newY > (UtilityResource.MapRows - 1) * UtilityResource.GridSize)
                {
                    return false;
                }
                for (int i = 0; i < GameRole.UtilityResource.MapCols - 1; i++)
                {
                    for (int j = 0; j < GameRole.UtilityResource.MapRows - 1; j++)
                    {
                        //石墙、木箱、炸弹障碍检测 问题出在这里 newX newY代表人物在窗口上的坐标i * UtilityResource.GridSize j * UtilityResource.GridSize表示障碍物的坐标 下面定义了一个类检测 人物所在坐标处的矩形和障碍物所在处的矩形是否相交 下面的if条件只检测前面两个的话可行 但是当人物放出炸弹Bomb时 炸弹矩形和人物矩形在放出炸弹时就相交了  人物无法移动  怎么实现人物放出炸弹能穿过炸弹 当人物穿过炸弹后就不能穿过炸弹了  望解决啊  阿门 这个问题纠结了我半天了
                        if (GameMap.Grids[i, j] == GameMap.GridType.Stone || GameMap.Grids[i, j] == GameMap.GridType.Soil||GameMap.Grids[i, j] == GameMap.GridType.Bomb)
                        {
                            if (HitCheck.IsIntersect(i * UtilityResource.GridSize, j * UtilityResource.GridSize, newX, newY))
                            {
                                return false;
                            }
                        }
                    }
                }
                return true;
            }
            /// <summary>
            /// 碰撞检测类
            /// </summary>
            public class HitCheck
            {
                /// <summary>
                /// 判断物体是否相交
                /// </summary>
                /// <param name="x1">对象1 X坐标</param>
                /// <param name="y1">对象1 Y坐标</param>
                /// <param name="x2">对象2 X坐标</param>
                /// <param name="y2">对象2 Y坐标</param>
                /// <returns></returns>
                public static bool IsIntersect(int x1, int y1, int x2, int y2)
                {
                    Rectangle r1 = new Rectangle(x1, y1, UtilityResource.GridSize, UtilityResource.GridSize);
                    Rectangle r2 = new Rectangle(x2, y2, UtilityResource.GridSize - 4, UtilityResource.GridSize - 3);
                    //判断对象是否相交
                    if (r1.IntersectsWith(r2))
                    {
                        return true;
                    }
                    return false;
                }
            }
搜索更多相关主题的帖子: 记录 游戏 public 泡泡堂 
2011-11-07 20:51
宫郎
Rank: 1
等 级:新手上路
帖 子:4
专家分:3
注 册:2011-10-9
收藏
得分:0 
救命啊  实在是想不出来了  
2011-11-07 21:20
qq1023569223
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:湖南科技大学
等 级:贵宾
威 望:26
帖 子:2753
专家分:13404
注 册:2010-12-22
收藏
得分:0 
没法看啦!

   唯实惟新 至诚致志
2011-11-08 07:34
宫郎
Rank: 1
等 级:新手上路
帖 子:4
专家分:3
注 册:2011-10-9
收藏
得分:0 
已经自己搞定了  谢谢
2011-11-08 11:40
快速回复:请教前辈 蛋疼的问题啊
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019154 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved