使用大小与原始大小不同的纹理对 SKSpriteNode 进行动画处理

2024-01-05

我想使用 SKTextureAtlas 中的纹理为 SKSpriteNode 制作动画,使用SKAction.animateWithTextures(textures,timePerFrame,resize,restore)。然而,图集中的纹理的尺寸比原始纹理稍大(基本上是角色移动)。当动作运行时,纹理要么被压缩以适合精灵的原始大小,要么在我设置时居中resize to false,这会改变角色的位置。不过,我想要的是将纹理锚定在左下角(或右下角,取决于方向),以便除了纹理的额外部分之外,角色的位置不会改变。

我尝试在运行动作之前更改精灵的锚点,但显然这也适用于原始纹理。另外,我想改变原始纹理的大小会对物理行为产生影响,这是我想避免的。

有人对如何做到这一点有建议吗?

Thanks!

David


这会起作用

  1. 编辑所有纹理以匹配最大尺寸纹理的大小。

只需使用 Alpha 通道为较小的纹理提供一些填充即可为您提供透明背景。

例如。注意第一个纹理如何有大量的负空间 (来自CartoonSmart.com)

  1. 创建具有特定尺寸的物理体。例如。您可以加载没有填充的纹理并获取尺寸。然后根据需要将其放置到带有填充的新的和改进的纹理上。因此,在使用新的调整大小的纹理正常创建精灵后,您可以

    /// load a texture to be a template for the size
    let imageTextureSizeTemplate = SKTexture(imageNamed: textureWithoutPadding)
    
    let bodySize = imageTextureSizeTemplate.size()
    
     /// position template texture physics body on texture that will be used  
    let bodyCenter = CGPointMake(0.5, 0.5)
    
    // create physics body
    let body:SKPhysicsBody = SKPhysicsBody(rectangleOfSize: bodySize, center: bodyCeneter)
    
        self.physicsBody = body
    
  2. 当您对纹理进行动画处理时,设置 resize: false。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用大小与原始大小不同的纹理对 SKSpriteNode 进行动画处理 的相关文章

  • Swift:检查 UISearchBar.text 是否包含 url

    如何检查 UISearchBar text 是否包含 URL 我想做这样的事情 if searchBar text NSTextCheckingType Link 但我收到错误 String is not convertible to NS
  • 带约束的嵌套集合视图的意外行为 (Swift 4)

    我的表格视图中有一个单元格 其中包含水平分页集合视图 该集合视图的每个页面内都有一个垂直集合视图 为了避免 滚动滚动 问题 我在垂直集合视图中禁用了垂直滚动 垂直集合视图的单元格计数不是静态的 可以是任意数字 因此 这会产生一个问题 集合视
  • NSURLCache 不缓存

    我正在使用 Xcode 6 1 6A1030 iOS7 和 iOS8 模拟器 NSURLCache 似乎没有缓存任何东西 我使用 Cache Control 标头 我的服务器返回带有 max age 6000 的 Cache Control
  • 如何将CIFilter应用到UIView上?

    根据Apple docs 过滤属性CALayer不支持iOS 当我使用正在申请的应用程序之一时CIFilter to UIView即 Splice Funimate 和 Artisto 的视频编辑器 Videoshow FX 这意味着我们可
  • XCode 7 中的 AWSS3TransferManagerUploadRequest

    我今天升级到 Xcode 7 Swift 2 0 我的项目正在使用 CocoaPods 我正在 POD 文件中导入所有与 AWS 相关的文件 我已经设置了桥接标头 并导入了 Amazon 告诉我的所有文件 在升级到 Swift 2 0 之前
  • WKWebview 中的 iCLoud 文档选择器关闭容器视图

    我有一个 WKWebview 加载基于 Web 的 UI 我希望用户能够从其 iCloud 文档上传文件 我已授予正确的权限 并且可以浏览 iCloud 文档 但是 当我选择文件或单击取消按钮时 文档选择器视图也会关闭 WKWebview
  • 如何将自定义 C 代码放入 SwiftPM 包中?

    我正在尝试将 C 代码打包到 Swift 模块中 我们称之为CModule 一旦我将其放入项目的基本文件夹中 Swift模块 并配置了搜索路径 我可以在 Swift 文件中自动完成工作 并检测错误 警告 问题是 导入时它无法识别该模块 并且
  • 如何在 Swift 中使用未知密钥解码 JSON 响应?

    我想将数据拆分为https blockchain info ticker https blockchain info ticker这样每一行都是它自己的String在一个数组中 我正在制作一个获取所选货币价格的应用程序 因此 如果有人想要澳
  • Xcode 错误 - 架构 x86_64 的未定义符号?

    我正在运行 Swift 4 和 Xcode 9 beta 我收到此错误 但我不知道如何解决它 我什至不知道这是什么意思 Undefined symbols for architecture x86 64 T0So22AVCapturePho
  • 删除派生数据文件夹后,Xcode 不断重新创建派生数据文件夹

    自动完成功能在 Xcode 6 中不再起作用 我四处搜索 发现删除派生数据文件夹可以解决此问题 每次我删除它时 它都会回来 然后就不会再自动完成了 有什么建议么 Thanks 没关系 我解决了这个问题 我没有声明需要在类内的方法中使用的变量
  • 为 Swift 对象/属性设置观察者

    我一直在寻找一种在连接到 Mac 的显示器数量发生变化时触发方法的方法 我知道我可以获得 NSScreen screens count 的值 但我需要找到一种方法来在该值发生变化时创建通知或其他内容 或者指示所连接的显示器数量发生变化的其他
  • 不明白 Swift 中的闭包示例

    我正在尝试了解 swift 和闭包 我被这个例子困住了 numbers map number Int gt Int in let result 3 number return result 什么是 number Int gt Int 它是一
  • Xcode 10 Beta 5 — clang:错误:链接器命令失败,退出代码为 1

    有人可以帮我吗 我的项目一切正常 但更新到 Xcode10 Beta5 后 尝试在 iPhone 上运行该应用程序时出现此错误 然而模拟器可以工作 请帮助我 我已经对这个问题进行了网络搜索并发现this https stackoverflo
  • 可以获取位置,但无法获取航向

    我目前只使用模拟器 但我在 iOS 模拟器上快速使用 CoreLocation 时遇到问题 我得到此代码打印的位置更新 但从未得到标题 我不想当然 我正在尝试制作一个指南针类型的应用程序 它将显示目标的方位 class CompassVie
  • SwiftUI:状态栏颜色

    有没有办法将 SwiftUI 视图的状态栏更改为白色 我可能错过了一些简单的东西 但我似乎找不到在 SwiftUI 中将状态栏更改为白色的方法 到目前为止我只看到 statusBar hidden Bool 状态栏文本 色调 前景色可以通过
  • 用于字数计算的 Swift String 中的字数

    我想做一个程序来找出字符串中有多少个单词 用空格 逗号或其他字符分隔 然后把总数加起来 我正在制作一个平均计算器 所以我想要数据总数 然后将所有单词相加 update Xcode 10 2 x Swift 5 或更高版本 使用基础方法enu
  • 为什么我不能在 Realm 属性上使用 private

    我正在尝试在 RealmSwift 中存储一个枚举案例 但 Realm 不支持枚举 本文 https medium com it works locally persisting swift enumerations with realm
  • 所需框架与静态库

    构建现代框架 https developer apple com videos play wwdc2014 416 says 每个应用程序都有自己的自定义框架副本 https stackoverflow com a 15262463 242
  • 在真实设备上展示测试广告

    这是我的代码 let request GADRequest request testDevices kGADSimulatorID XXXX2F32d69CCA859FFB559D0FEA3CF6483D08A6 adView load r
  • 我的游戏中应该有多少个视图控制器?

    我开始使用 spritekit 构建我的第一个游戏 现在我只有一个视图控制器来呈现开始屏幕场景 override func viewDidLoad super viewDidLoad let scene StartScreenScene C

随机推荐

  • 只读内存和堆内存

    AFAIK 在 C 语言中 字符串文字存储在只读存储器中 它实际上存在于硬件上的什么位置 根据我的知识堆在 RAM 上 如果我错了 请纠正我 堆和只读内存有什么不同 它依赖于操作系统吗 这通常是在硬件辅助下完成的 可以告诉硬件的虚拟内存子系
  • 如何防止对我的用node.js编写的http服务器进行DOS攻击?

    使用node js 用于构建可以处理http请求的tcp服务器的net模块 我想防止 ddos 攻击 所以我所做的是这样的 if status numOfCurrentRequests 1 gt MAX NUM OF CONNECTIONS
  • 如何在CSS中创建双底边框

    我想在标题底部创建一个双边框 其中有两条不同粗细的线 其间有 1px 的空间 具体来说 顶线的厚度为 2px 底线的厚度为 1px 这是我想要达到的美学目标的图像示例 其他使用此设计方面的网站 http www rollingstone c
  • MSBuild 使用凭据调用 Powershell

    我正在尝试使用运行 Powershell 命令的 MSBuild 脚本来部署 Windows 服务 MSBuild 脚本部署我需要的文件 PowerShell 脚本将使用以下命令卸载并重新安装 Windows 服务 Invoke Comma
  • 使用参数循环进行量角器测试

    我有一组几乎完全相同的烟幕测试 我想将它们放入循环中并在参数数组中循环 但是 测试是异步运行的 因此循环在测试运行之前完成 这导致测试对第 8 个参数运行 8 次 而不是每个参数运行一次 describe Admin Console Cam
  • AngularJS 中的简单 dom 操作 - 单击按钮,然后将焦点设置到输入元素

    我有这个角度代码 div class element wrapper div class first wrapper div class button element name div div div class second wrappe
  • Android - 尝试添加图像时会创建空白图像

    我使用的是Android Studio 1 5 我正在尝试做一些非常简单的事情 向我的项目添加一个大图像 我将使用它作为我的 MainActivity 的背景 当我右键单击 res gt Add gt Image Asset 并选择 操作栏
  • Google Admin SDK Push API 发送“同步”网络钩子,但仅此而已

    我的应用程序使用推送通知 API 在文档中也称为频道订阅或 Webhooks 和报告 API 来获取有关身份验证令牌的实时更新 每 6 小时 我们的应用程序就会发出一个请求https www googleapis com admin rep
  • 为什么子进程忽略 PATH,我该如何更改它?

    我需要更改 Python 应用程序调用的程序 很遗憾我无法更改 Python 代码 我只能改变调用环境 特别是 PATH 但不幸的是Python的子进程模块似乎忽略了PATH 至少在某些情况下 我怎样才能强迫Python尊重PATH当搜索要
  • 分布式MAKE

    我之前有一个 MAKE 编译过程 大约需要 1 小时才能完成 我使用 j 命令并能够将其减少到 40 分钟 我观察到 CPU 利用率很高 我的导师建议我将作业分配到我们组织可用的不同服务器或机器上 我读过有关 distcc 的内容 但它只能
  • Ruby 数组 - 求对角线之和

    以前没见过这个 但我想知道如何在 Ruby 中找到 2D 数组的两个对角线之和 假设您有一个简单的数组 包含 3 行和 3 列 array 1 2 3 4 5 6 7 8 9 我可以使用以下方法将其分成三组 array each slice
  • Android - 如何知道mapView是否正确加载?

    我在检测我的 Android 地图应用程序中是否加载了 MapView 时遇到了麻烦 在OnCreate方法中 当我分配地图URL时 我想知道是否发生了任何问题 由于我的互联网连接或任何其他问题 例如从 REST 服务加载地图 可能会出现问
  • 如何从服务器下载XML文件并将其保存到SD卡中?

    在我的应用程序中 我尝试从服务器下载 XML 文件并将其存储在 SD 卡中 为此 我使用以下代码 try File root android os Environment getExternalStorageDirectory File d
  • Swift 中单例类的委托

    如何使用单例 共享类的委托方法 有一个单例类定义了一些协议 但我不知道如何访问其他类中的委托函数 供参考的代码片段 swift protocol AClassDelegate func method1 class A static let
  • 共享意图不适用于将视频上传到 YouTube

    我正在尝试共享正在创建并存储在外部 SD 卡上的视频 其路径已通过获取 Environment getExternalStoragePublicDirectory Environment DIRECTORY MOVIES getAbsolu
  • 通过一个脚本为 apache 提供域下的所有路径

    我通过一家托管公司 1 在 Linux apache 服务器上托管一个网站 到目前为止 我通过一个带参数的脚本提供不同的内容 示例网址是 www mydomain com pages php date 1 10 2008 现在我想将 url
  • InetAddress.getByName 在代理后面失败

    我正在尝试将主机名解析为其相应的 IP 我的环境是公司网络中代理服务器后面的一台 Mac 通过系统首选项 自动代理配置 配置了 pac 文件 到目前为止 一切工作正常 我可以访问公司网络内部和外部的资源 解析我的网络中的主机工作得很好 In
  • 如何确定 Rails 3 中 ActiveRecord 关联的范围?

    我有一个 Rails 3 项目 Rails 3 带来了 Arel 以及重用一个范围来构建另一个范围的能力 我想知道在定义关系时是否有办法使用范围 例如 has many 我有带有权限列的记录 我想构建一个 default scope 来考虑
  • 在 R 中创建市场篮子矩阵的有效方法

    我正在尝试根据如下数据创建一个市场篮子矩阵 input lt matrix c 1000001 1000001 1000001 1000001 1000001 1000001 1000002 1000002 1000002 1000003
  • 使用大小与原始大小不同的纹理对 SKSpriteNode 进行动画处理

    我想使用 SKTextureAtlas 中的纹理为 SKSpriteNode 制作动画 使用SKAction animateWithTextures textures timePerFrame resize restore 然而 图集中的纹