2D游戏获得子节点的最小最大位置
2016-04-20 21:12
447 查看
以下代码我是用在编辑器中的,因为递归比较耗嘛。
代码思路:
1.检测矩形碰撞区,图片,粒子的宽度,再根据子节点位置算出两边的最大最小位置。
2.该节点宽度为width = max-min。
以上代码具体说是获得x轴的最大最小位置,而y轴也是一样的写法。上面的代码在我的项目中有很大的作用,我做的是一款横版跑酷游戏,障碍和背景移动而主角不动。这样我就可以根据每种障碍的宽度和离主角的位置来精确地打开和关闭碰撞体,做到很大程度的优化。还可以控制每个障碍生成的间距。做到不管障碍物有多大多长,都能准确地控制生成时机和间距。
代码思路:
1.检测矩形碰撞区,图片,粒子的宽度,再根据子节点位置算出两边的最大最小位置。
2.该节点宽度为width = max-min。
private void GetMinMaxPos( Transform node, ref float minValue,ref float maxValue ) { ParticleSystem particle = null; SpriteRenderer render = null; var boxCollder = node.GetComponent<BoxCollider2D>(); float minPos = float.MaxValue; float maxPos = float.MinValue; if( boxCollder != null ) {//该节点包含矩形碰撞体 minPos = boxCollder.size.x; } else { render = node.GetComponent<SpriteRenderer>(); if( render != null ) {//该节点包含图片 minPos = render.bounds.size.x; } else { particle = node.GetComponent<ParticleSystem>(); if( particle != null ) {//该节点包含粒子 minPos = particle.startSize; } } } if( minPos != float.MaxValue && minPos != float.MinValue ) { maxPos = minPos; //min minPos = node.position.x - minPos * node.lossyScale.x * 0.5f; if( minPos < minValue ) minValue = minPos; //max maxPos = node.position.x + maxPos * node.lossyScale.x * 0.5f; if( maxPos > maxValue ) maxValue = maxPos; } var c = node.childCount; if( c <= 0 )return; for( int i = 0; i < c; i++ ) { GetMinMaxPos( node.GetChild( i ), ref minValue, ref maxValue ); } }
以上代码具体说是获得x轴的最大最小位置,而y轴也是一样的写法。上面的代码在我的项目中有很大的作用,我做的是一款横版跑酷游戏,障碍和背景移动而主角不动。这样我就可以根据每种障碍的宽度和离主角的位置来精确地打开和关闭碰撞体,做到很大程度的优化。还可以控制每个障碍生成的间距。做到不管障碍物有多大多长,都能准确地控制生成时机和间距。
相关文章推荐
- 一步一步跟我学易语言之第二个易程序菜单设计
- FCK编辑器(FCKEditor)添加新按钮和功能的修改方法
- ecshop后台编辑器替换成ueditor编辑器
- jquery可定制的在线UEditor编辑器
- 10个基于jQuery或JavaScript的WYSIWYG 编辑器整理
- jquery获取子节点和父节点的示例代码
- jquery 取子节点及当前节点属性值
- JS 使用for循环遍历子节点查找元素
- PHP网页 Ewebeditor 编辑器嵌入方法
- kindSoft在线网页编辑器简单的配置参数介绍
- dedecms5.5 最新版ckeditor编辑器整合教程
- javascript 在线文本编辑器实现代码
- 在线编辑器中换行与内容自动提取
- javascript获取网页中指定节点的父节点、子节点的方法小结
- 网页上的Javascript编辑器和代码格式化
- 基于jquery实现可定制的web在线富文本编辑器附源码下载
- ArtEditor富文本编辑器增加表单提交功能
- 推荐5款跨平台的PHP编辑器
- 超漂亮的Bootstrap 富文本编辑器summernote
- js遍历子节点子元素附属性及方法