草庐IT

swift - 多孔边界

coder 2023-09-11 原文

我刚刚为我的游戏设置了一个边界,它似乎工作正常,直到它真的被强制,就像我让我的角色朝它跑了几秒钟,然后我的角色就​​会直接穿过。对此有何解释以及如何解决?

编辑: 这是我的边界代码

    func createSceneContents() {
         self.backgroundColor = .black
         self.physicsBody = SKPhysicsBody(edgeLoopFrom: self.frame)
                }

    createSceneContents()
        ship.physicsBody = SKPhysicsBody(rectangleOf: ship.size)
        ship.physicsBody?.affectedByGravity = false
        ship.physicsBody?.isDynamic = true
        ship.name = "ship"
        ship.physicsBody?.categoryBitMask = PhysicsCategory.ship
        ship.physicsBody?.collisionBitMask = PhysicsCategory.ship

最佳答案

尝试为您的ship设置精确的碰撞检测:

ship.physicsBody?.usesPreciseCollisionDetection = true

您还可以考虑向边界添加物理类别。

关于swift - 多孔边界,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43412818/

有关swift - 多孔边界的更多相关文章

  1. ruby-on-rails - 在单词边界处将文本换行 - 2

    1)我想按单词自动换行,使每行不超过56个字符。有没有办法做到这一点,还是我需要自己动手?@comment_text="Loremipsumdolorsitamet,consecteturadipisicingelit,seddoeiusmodtemporincididuntutlaboreetdoloremagnaaliqua."我的看法:将呈现:Loremipsumdolorsitamet,consecteturadipisicingelit,seddoeiusmodtemporincididuntutlaboreetdoloremagnaaliqua.2)我想将文本缩进4个空格,

  2. javascript - 为什么 function.apply() 不能在 IE 中跨文档边界工作? - 2

    我在IE中看到一些奇怪的行为,试图通过function.apply()调用另一个页面中的函数。这是一个简单的测试用例:test1.html:varopened=null;functionapplyNone(){opened.testFunc.apply(opened);}functionapplyArgs(){opened.testFunc.apply(opened,["appliedarray"]);}functioncall(){opened.testFunc("calleddirectly");}functionremoteApply(){opened.testApply(["u

  3. javascript - 如何划分定向边界框? - 2

    我正在编写代码,为二维(不一定是凸的)多边形构建定向边界框(obb)树。到目前为止,我可以通过找到凸包并在凸包上使用旋转卡尺来找到多边形的面积最小obb。下图就是一个例子。带有红线和红点的黄色填充多边形描绘了原始多边形。凸包显示为蓝色和黑色线条,obb显示为紫色线条。(编辑)按要求:InteractiveVersion-仅在chrome中测试现在我想扩展我的代码来构建一个OBB树,而不仅仅是一个OBB。这意味着我必须切割多边形,并为多边形的每一半计算新的OBB。执行此操作的推荐方法似乎是通过将OBB切成两半来切割多边形。但是,如果我将obb从它的任一轴的中间切开,看起来我必须在多边形上

  4. javascript - 获取以屏幕像素为单位的旋转 SVG 元素的边界? - 2

    我正在尝试找到以屏幕像素为单位获取任意SVG元素边界框的最佳方法,以便正确覆盖HTML元素。到目前为止,我的方法是使用.getBBox()和.getCTM()检索对象的边界框和变换矩阵,然后将变换应用于边界框点如thisquestion的已接受答案中所述.//gettheelementvarel=$(selector)[0],pt=$(selector).closest('svg')[0].createSVGPoint();//gettheboundingboxandmatrixvarbbox=el.getBBox(),matrix=el.getScreenCTM();pt.x=bbo

  5. javascript - 使用 React.JS 检索和缓存 SVG 节点边界框​​的最佳方法 - 2

    我正在渲染带有标签的SVG组件。这些标签组件需要根据它们的文本内容(以及它们的大小)正确布局,以避免相互重叠。要获得每个标签的真实大小,似乎每次更新标签内容时都需要双重渲染。在标签组件级别,我需要第一次渲染检索真实SVGDOM节点的边界框出于性能原因缓存边界框重新渲染组件以根据其缓存的边界框调整标签位置然后,在每次重绘时:根据缓存的边界框渲染比较之前和更新的props之间的标签内容,如果有变化:更新并缓存标签边界框根据更新和缓存的边界框重新渲染到目前为止,这是我实现标签组件的方式:varLabel=React.createClass({updateBBox:function(){//T

  6. javascript - 模糊 SVG 中的边界 (Raphael.js) - 2

    我正在开发一个基于网络的编辑器,可以在其中拖动元素和调整元素大小。我遇到了关于显示1px边框和元素的问题:我得到了一条模糊线,而不是像素到像素显示(例如1px实线)。我发现,如果我使用末尾带有.5的坐标(例如10.5、124.5)和整数大小,一切都是像素完美的。这里是例子。在我改变它的坐标之前的元素:之后(每个整数大小末尾有“.5”):问题是我如何强制Raphael.js以清晰的方式显示所有内容? 最佳答案 我不确定如何在Raphael中执行此操作,但一点点CSS可以帮助您:.your_lines{shape-rendering:c

  7. javascript - POST 请求 header 中的内容类型缺少 FormData 边界 - 2

    我使用的代码与我在类似项目中成功使用的文件上传代码相同,但出于某种原因,边界从未添加到请求header中的内容类型属性中。这导致我的C#web-api函数无法检测到图像。这是我使用angularjs的发布请求:varformData=newFormData($('#testform')[0]);$http({url:serviceBase+'api/Client/'+item.practiceID+'/SavePhoto',method:"POST",data:formData,headers:{'Content-Type':false},transformRequest:functi

  8. javascript - 如何从谷歌地图获取纬度和经度边界 x y 和缩放参数 - 2

    我看过一些类似标题的问题,但它们似乎指的是x和y像素坐标。我要从GooglemapgetTile()函数中询问x和y的实际图block编号:澄清问题...给定getTile()函数中的x、y和缩放参数,如何找到图block的纬度和经度边界?CoordMapType.prototype.getTile=function(coord,zoom,ownerDocument){varx=coord.x,y=coord.y,url="http://mt1.google.com/vt/lyrs=y&x="+x+"&y="+y+"&z="+zoom;//otherstuff}目前我需要这个的唯一原因

  9. javascript - Node/Javascript 中的 RegEx - 如何获取模式匹配边界? - 2

    目前,我通过find()在Javascript/Node中使用正则表达式,这适用于查找模式的开头。但我也希望能够找出模式的结束位置。这可能吗? 最佳答案 如果您使用RegExp.exec()方法,您可以获得所需的信息。varpattern=/\d+\.?\d*|\.\d+/;varmatch=pattern.exec("thenumberis7.5!");varstart=match.index;vartext=match[0];varend=start+text.length;/\d+\.?\d*|\.\d+/等同于newRegE

  10. javascript - 当位置跨越第 180 条子午线时,如何使用 LocationRect.fromLocations() 正确获取边界框? - 2

    我正在使用v7BingMapsJavascript“控件”(我不知道为什么它被称为“控件”...)。我正在调用Microsoft.Maps.Map.setView({bounds:bounds})但它没有像我期望的那样工作。我有一组多边形,其点跨越第180条子午线。一个例子是新西兰岛屿的边界——其中一些位于180度经线以西,一些部分(查塔姆群岛)位于东经。当我用这些边界创建多边形并调用setView()时,mapwaaaaaay缩小。为什么?以及如何避免?Thispage提供问题的演示。这是代码。varmap,MM=Microsoft.Maps;functionshowMap(m){v

随机推荐