• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - 用 SpriteKit 画线并检测碰撞

[复制链接]
菜鸟教程小白 发表于 2022-12-12 10:57:57 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我已经设法用我的随机 CGPoints 数组画了一条线。

    -(void)drawLine
    {
    SKShapeNode *mainLine = [SKShapeNode node];
    CGMutablePathRef pathToDraw = CGPathCreateMutable();
    CGPathMoveToPoint(pathToDraw, NULL, 0, 0);

    for(int i;i<pointsInMyView.count;i++)
    {
        CGPoint myPoint = [pointsInMyView[i] CGPointValue];
        CGPathAddLineToPoint(pathToDraw, NULL, myPoint.x, myPoint.y);
        mainLine.path = pathToDraw;
    }
    [mainLine setLineWidth:40];
    [mainLine setStrokeColor:[SKColor whiteColor]];
    mainLine.name = @"mainLine";
    [self addChild:mainLine];


}

如您所见,我正在绘制一个 SKShapeNode。我的目标是检查我的 SKSpriteNode 与我的线路的冲突。但是,当然,这个形状节点构成了一个包含我线的所有点的框架,在这种情况下,我的 ShapeNode 遍布我的视野。我的 SpriteNode 一直检测到与此 ShapeNode 的碰撞。 我猜我应该画多个不同的 ShapeNode,所以每个节点都有自己的框架。但如果我这样做,我的线路没有连接。 是否有一些解决方案可以逐个节点绘制这个节点并且仍然可以得到很好的线条。



Best Answer-推荐答案


不幸的是,SpriteKit 中的节点不能是凹形的 (http://mathworld.wolfram.com/ConcavePolygon.html),线条相互交叉。

您必须为相邻点之间的每条线创建单独的节点,然后可能将它们连接在一起。你可以这样做:

  1. 创建第一个段,然后将后续段添加为子段 第一段。
  2. 为整行创建一个不可见节点并添加该行 段作为该节点的子节点。
  3. 为每个部分创建物理体并将它们与 SKPhysicsJointFixed.

关于ios - 用 SpriteKit 画线并检测碰撞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36642822/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap