如何在 Sprite Kit、Objective C 中用手指移动击中物体

2023-12-04

我正在尝试制作一个游戏,其中我有一些 SKSpriteNode,并且用户可以通过手指移动来击中它们,我正在使用苹果的新 Sprite 套件。

为此,我尝试了一个技巧 - 将 Sprite - “X”(SKSpriteNode)放置在手指所在的位置,当用户移动手指时 - 更改此 X sprite 的位置,

问题是它只有在不运动时才会撞击其他精灵,我希望其他精灵能够响应移动手指的当前速度 - 手指移动越快 - 碰撞应该越强烈。

你能帮我一下吗?

  • 虽然我觉得这个技巧不是正确的方法,但我也发布了代码。

    -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
    {
        if([touches count]==1)
        {
            self.X= [[SKSpriteNode alloc]initWithImageNamed:@"X"];
            self.X.name= @"X";
            UITouch *t= touches.allObjects[0];          
    
            self.X.position= [t locationInNode:self.GameNode];
            self.X.physicsBody = [SKPhysicsBody bodyWithCircleOfRadius:20];
            self.X.physicsBody.dynamic=YES; // Tried NO too...
            self.X.zPosition=1;
    
            [self.GameNode addChild:self.X];
        }
    }
    -(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
    {
        UITouch *t = touches.allObjects[0];
        self.X.position = [t locationInNode:self.GameNode];
    }
    -(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
    {
        [self.X removeFromParent];
    }
    

经过一番查找和实验,终于有了答案!

解决方案的第一步是由阿亚图拉安迪- 寻找撞击点:

SKNode *node = [self nodeAtPoint:location];

这一行获取我们在指定位置命中的节点,如果它返回 nil 则说明我们没有命中任何内容。

其次-我们想要“击中”物体,因此我们需要ApplyImpulse:

[node.physicsBody applyImpulse:CGVectorMake(thrustV.x, thrustV.y) atPoint:location];

在这里你可以看到我用在撞击点创建的一些矢量应用了脉冲, 就是这样 - 非常简单,我希望这对其他人有帮助。

分享就是关怀, 感谢您花时间阅读我的帖子。

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

如何在 Sprite Kit、Objective C 中用手指移动击中物体 的相关文章

  • HTML5 地理定位 - 在 iOS 上无法始终工作

    目前正在使用 HTML5 地理定位 我已经在所有网络浏览器上测试了它 它似乎工作正常 然而 当我在 iPad 上测试地理定位时 它在 iPad mini 上始终有效 但当我将其放在更大的 iPad iPad 2 上时 位置似乎并不总是有效
  • 将我的免费应用程序从 Universal 升级到仅限 iPhone

    我释放我的free app到 appStore 它的版本是 1 0 它是一个Universal app 现在我想发布 1 1 版本到 appStore 我将其升级到iPhone only appStore会拒绝我吗 我已阅读类似的问题 ht
  • 使用 AVAssetExportSession 导出延时会导致黑色视频

    我需要能够合并使用 iOS 上的相机应用程序中的延时拍摄功能拍摄的视频并导出为单个视频 但是 即使我尝试将单个未更改的延时视频导出到照片库 它也会保存为全黑视频 具有正确的持续时间 以下是我编写的示例代码 用于导出单个未更改的视频 其中大部
  • 添加自定义参数 - Phonegap Build

    最近 Apple 强制要求在上传到 Itunesconnect 的每个版本中添加声明加密 密码学 但由于它不适用于我 因为我的应用程序不涉及苹果页面所说的任何功能 如果我错了 请纠正我 我想申请豁免 为此我必须添加
  • 有没有办法更改 UITabBar 或 UITabBarItem 中的文本位置?

    这是我打算放在屏幕上的自定义选项卡栏 然而 我的搭档希望文字稍微向上一些 我怎样才能这样做呢 为什么不为视图控制器设置一个空的标题属性 并将标题添加到选项卡的自定义图像中 UPDATE 为了回答的完整性 来自评论和ios标签栏在没有图像时将
  • 从 RemoteIO 录制到 AAC:数据正在写入,但文件无法播放

    我一直在尝试从 iPad 2 上的 iOS 5 中的 renderCallback 中直接从 RemoteIO 单元录制到 AAC 我看到了相互矛盾的信息 说这是不可能的 但这是可能的 在评论中 here http atastypixel
  • Swift 3 中来自路径或文件名的 UIImage

    我的应用程序的文档目录中有一堆图像 我想将其中之一加载到我认为的 UIImage 中 这就是我所做的 myImage image UIImage named image jpg the file exist but this returns
  • iOS 版有 Parse.com 的替代品吗? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我目前使用 parse com 来管理用户 他们有很棒的 AP I 有不错的后端供我管理东西 但我更愿意托管我自己的数据 服务器后端 我可
  • 获取 UIView 的视图控制器(iphone)

    我这样做是为了获得视图 self superview viewWithTag 10 但我怎样才能获得该视图的视图控制器 就像您可以获得视图控制器的视图一样 我想采用另一种方式 以便我可以向该视图控制器发送消息 调用方法 例如 self su
  • NSArray 中不重复的所有可能组合

    假设我有一个包含 3 个数字的数组 NSArray array 1 2 3 我想进行所有组合而不重复 所以我需要的是这样的 1 2 3 1 2 2 3 1 3 1 2 3 我当前的代码是这样的 NSArray array 1 2 3 int
  • 如何将 AFNetworking 2 与摘要式身份验证结合使用

    我一直在搜索 AFNetworking 2 with Digest Authentication 一段时间 但没有找到关于它的有用讨论 除了this one https github com AFNetworking AFNetworkin
  • 为什么类方法中的“self = [[Rectangle alloc] init]”是错误的?

    在 Apple 的文档 Objective C 编程语言 中 第 48 页说道 Rectangle rectangleOfColor NSColor color self Rectangle alloc init BAD self setC
  • iPhone iOS 是否有用于类似代数计算器的应用程序的表达式解析器?

    我正在构建一个应用程序 可以通过加速度计和陀螺仪输出来分析手机的运动 我很可能会将这个动作捕获为一组变量 应用程序将在内部跟踪这些变量 我试图提供一种方法来绘制这些变量和涉及这些变量的方程 我想让用户能够通过输入 a b c d 等方程 其
  • UISlider 的自定义 UIImage 设置为 UIImageRenderingModeAlwaysTemplate

    我正在尝试自定义外观UISlider通过为拇指 minimumTrack 和 MaximumTrack 设置自定义图像 如下所示 let sliderThumbImage UIImage named slider thumb volumeS
  • 自定义过渡动画在animationControllerForPresentedController和animateTransition之间未知延迟

    我的目标是使动画在第一个视图控制器中开始并在第二个视图控制器中结束 我正在尝试使用符合以下条件的对象进行过渡动画UIViewControllerAnimatedTransitioning and UIViewControllerTransi
  • 如果在系统设置中关闭隐藏式字幕,则不会显示字幕

    我正在尝试显示字幕 无论设备在辅助功能下设置了什么 目前 如果设备设置为英语并在设置中启用隐藏式字幕 则将播放英语字幕 如果设备设置为西班牙语 则将播放西班牙语字幕 我希望无论隐藏式字幕是否打开 都能播放字幕 我尝试添加这段代码 https
  • 验证 iOS 应用程序时出现 com.apple.developer.linked-domains 问题

    当我在 Xcode 中使用 Organizer 验证我的项目时 出现以下错误 无效的代码签名权利 你的申请包的签名包含代码签名权利iOS 上不支持的 具体来说 值 for key com apple developer associated
  • cocos2d中获取CCSprite的绝对位置

    在我的游戏中 我有一个CCSprite绕另一个轨道运行CCSprite 很像电子绕原子核运行 我将电子作为原子核的子元素 以使动画更加简单 我所要做的就是旋转原子核 电子就会很好地跟随 然而 我的问题来自于想要让轨道动画看起来更时髦一点 通
  • Objective C“#if”语法

    我对 如果 或 如果 有点困惑 if当我查看一些类时我看到的语法 例如 if someConstant someNumber do something elif etc versus if someConstant someNumber d
  • UITableView 干扰状态栏

    我正在开发一个具有 UITableViewController 的应用程序 该应用程序显示值列表 如下所示 如何将表格向下移动 使其不会与状态栏冲突 看来我无法对这个场景施加任何限制 所以我不知所措 使用以下 3 个属性UIViewCont

随机推荐

  • 在自托管 ASP.NET Core 微服务中启动多个后台线程

    我在哪里可以创建多个长时间运行的后台线程Self Hosted Self Contained ASP NET Core Microservice谁的生命周期与微服务生命周期相同 因此 从线程检索的信息可以作为对请求的响应发送 尝试了给定的代
  • 将 2d 数组从 PHP 传递到 JavaScript 的最佳方法?

    我想在 JavaScript 代码中使用一个 PHP 数组 我宁愿不做类似的事情对于其中的所有元素 因为它的数量未知 我本来打算做一个 while 循环来将一些数据写入元素中 但目前我似乎找不到一种简单的方法来做到这一点 如何以最简单的方式
  • 带有自定义图像 CSS 代码的复选框不起作用

    我正在尝试将自定义图像添加到复选框 并且我正在使用以下代码 input type checkbox display none input type checkbox label background image url images che
  • 使用 R 上的“高频”包转换 .csv 文件以进行进一步操作

    The highfrequency包已以转换的方式创建 txt and csv文件分别从 NYSE TAQ 和 WRDS TAQ 存入 RDataxts 对象的文件 然后可以通过包轻松操作这些文件 问题是我对 WRDS 数据库的访问权限有限
  • SQL 中是否始终需要 ID 列?

    更具体地说 我创建了一个带有标签系统的新闻模块 由于每个标签都是唯一的 作为管理员 您不允许创建 2 个相同的标签 因此 id 列仍然有用吗 我想不是 但我想知道表演 编号 mews 标题 日期 news id tag id id 标签名
  • 为什么 ARKit 应用程序在几天后停止工作?

    我在 Unity 中为 iOS 开发了一个简单的 ARKit 应用程序 它工作得很好 但有一个奇怪的问题 几天后它就停止工作了 因此 当我点击 iPhone 上的应用程序图标时 它会打开该应用程序一毫秒 然后立即退出 如果我再次重新安装该应
  • 运行 webpack 后 Javascript 函数未定义

    这是我的 webpack config js module exports entry src index js path relative to this file output filename frontEnd bundle js p
  • 版本控制中的项目结构

    我知道在版本控制中至少有 10 种不同的方式来构建项目 我很好奇正在使用的一些方法是什么以及哪些方法适合您 我曾经使用过 SVN TFS 目前 不幸的是 VSS 我见过版本控制的实现非常糟糕 也还可以 但从来都不是很好 为了让事情顺利进行
  • AWS lambda函数无法访问互联网

    我正在运行一个 lambda 函数 我想访问私有数据库服务器和互联网 我可以很好地访问数据库 但无法访问互联网 设置 VPC 10 0 0 0 16 Public Subnet 10 0 0 0 24 NAT Security Group
  • Android 中滚动“突出的顶部应用栏”的应用中的延迟滚动行为

    Current unexpected behaviour Required scrolling behaviour 我在带有滚动 突出的顶部应用栏 的 Android Kotlin 应用程序中遇到了一些意外的滚动行为 所需的行为是内部片段的
  • JavaScript 中变量初始化是否也被提升

    JavaScript 提升让我很困惑 变量初始化是否被提升 我认为它被提升是因为我们在声明和初始化变量之前访问变量 console log a var a 4 undefined undefined undefined 表明变量 a 在代码
  • 在有限域上插值多项式

    我想在有限域中的点上使用 python 插值多项式 并获得具有该域中系数的多项式 目前我正在尝试使用 SymPy 并专门进行插值 来自sympy polys polyfuncs 但我不知道如何强制插值在特定的 gf 中发生 如果没有 可以用
  • NSXMLParserDelegate 和 iPhone SDK 3.1.X

    我在商店里有一个为 3 1 2 构建的应用程序 但在 4 0GM 下崩溃了 我已经使用 Xcode 3 2 3 修复了崩溃问题 但也收到警告称此类类未实现 NSXMLParserDelegate 我添加到标题中 一切看起来都很好 我现在已经
  • 如何使用 pandas 数据框构建人口金字塔

    如何根据以下起始数据框绘制人口金字塔 Age Gender Count 0 50 45 years male 4 1 50 45 years female 5 2 55 65 years male 6 3 55 65 years femal
  • 在ggplot2中,可以仅更改条形边框的一侧吗? (颜色、厚度)

    我知道 3D 条形图是一种罪过 但我被要求这样做 作为一种权衡 我建议只制作一个比顶部和右侧的栏颜色稍深的边框 这样 条形图就会有某种 阴影 呃 但至少你仍然能够比较它们 有什么办法可以做到这一点吗 ggplot diamonds aes
  • 在代码隐藏中创建数据模板

    如何以编程方式向数据模板添加控件 例如 下面我创建了 TextBlock 和 DataTemplate TextBlock text new TextBlock DataTemplate template new DataTemplate
  • JavaScript Unicode 的长度(星体符号)

    我有一个 lt input type text gt 在 HTML 中 每次我添加一个字符时我都会执行if text length lt x 在 JavaScript 中 问题是 Unicode 特殊字符 星体符号 u 具有超过 4 个十六
  • 如何通过代码关闭 Ionic 5 应用程序?

    我找不到在 Ionic 5 系统中关闭应用程序的方法 看起来 Ionic 4 中的方法不适用于 Ionic 5 可以做吗 closeApp this platform backButton subscribeWithPriority 999
  • 本地修改的按值传递的参数会发生什么情况?

    我很清楚 修改按值传递的函数参数在 C C 函数之外是无效的 但编译器允许这样做 但会发生什么 是该论证的本地副本吗 是可修改的在函数内 include
  • 如何在 Sprite Kit、Objective C 中用手指移动击中物体

    我正在尝试制作一个游戏 其中我有一些 SKSpriteNode 并且用户可以通过手指移动来击中它们 我正在使用苹果的新 Sprite 套件 为此 我尝试了一个技巧 将 Sprite X SKSpriteNode 放置在手指所在的位置 当用户