You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何调整SKShapeNode大小?已初始化矩形节点,需固定缩减宽度

如何固定缩减SKShapeNode矩形的宽度25

嘿,我来帮你搞定这个问题!要把你创建的health_bar宽度固定缩减25,有两种实用的方式,你可以根据场景需求选择:

方法一:初始化时直接设置目标尺寸

如果是在创建健康条的阶段就想直接用缩减后的宽度,最简单的方式就是修改初始化时的CGSize参数,把原宽度300减去25即可:

var health_bar = SKShapeNode(rectOf: CGSize(width: 300 - 25, height: 100))
health_bar.name = "health_bar_name"
health_bar.fillColor = SKColor.green
health_bar.position = CGPoint(x: 70, y: 400)
scene.addChild(health_bar)

这样初始化出来的健康条宽度直接就是275,一步到位。

方法二:动态修改已添加到场景的节点尺寸

如果健康条已经添加到场景中,需要在后续某个时机(比如角色掉血时)动态缩减宽度,你可以通过重新设置它的path属性来实现精准调整:

// 在需要修改宽度的逻辑位置调用这段代码
if let currentFrameSize = health_bar.frame.size {
    // 计算新宽度:当前宽度固定减25
    let newWidth = currentFrameSize.width - 25
    // 保持高度不变,创建新尺寸
    let newSize = CGSize(width: newWidth, height: currentFrameSize.height)
    // 用新尺寸重新生成矩形路径
    health_bar.path = UIBezierPath(rect: CGRect(origin: .zero, size: newSize)).cgPath
}

小提醒

SKShapeNode的显示尺寸完全由它的path决定,这种修改路径的方式能精准控制宽高数值,还不会影响节点的原有位置(默认锚点在中心,修改路径后位置会自动保持一致)。

别用xScale来实现固定宽度缩减哦,缩放是按比例调整的,没办法精准减去固定数值25,还可能意外改变高度比例。

内容的提问来源于stack exchange,提问作者alchemist101

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 06:16:13