Sprite Kit - 应用脉冲向角色发射射弹

2023-12-12

我正在使用 Sprite-Kit (Objective-C) 开发游戏。在这款游戏中,你控制一只飞行中的小鸟,箭和其他不好的射弹会从屏幕的右/上/下侧向你射击。我使用物理而不是 SKAction 来完成此任务,因为我希望它看起来尽可能逼真。所以我知道在射弹上使用 applyImpulse 将其射向鸟,但我想知道的是如何保证射弹将直接射向鸟,无论鸟的 y 定位和 y 定位如何applyImpulse 之前的射弹?

我在完成这项工作时经历了非常令人沮丧的时间,因此我们将非常感谢有关此事的任何帮助。谢谢。


基本步骤是

  1. 计算从射弹发射器到鸟的矢量分量
  2. 标准化组件(可选)
  3. 通过缩放(标准化)分量创建向量
  4. 使用矢量对射弹施加冲量

这是如何执行此操作的示例

Obj-C

// Calculate vector components x and y
CGFloat dx = bird.position.x - launcher.position.x;
CGFloat dy = bird.position.y - launcher.position.y;

// Normalize the components
CGFloat magnitude = sqrt(dx*dx+dy*dy);
dx /= magnitude;
dy /= magnitude;

// Create a vector in the direction of the bird
CGVector vector = CGVectorMake(strength*dx, strength*dy);

// Apply impulse
[projectile.physicsBody applyImpulse:vector];

Swift

// Calculate vector components x and y
var dx = bird.position.x - launcher.position.x
var dy = bird.position.y - launcher.position.y

// Normalize the components
let magnitude = sqrt(dx*dx+dy*dy)
dx /= magnitude
dy /= magnitude

// Create a vector in the direction of the bird
let vector = CGVector(dx:strength*dx, dy:strength*dy)

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

Sprite Kit - 应用脉冲向角色发射射弹 的相关文章

  • 如何从标签栏控制器上方显示 UIActionSheet 视图?

    我需要在选项卡栏控制器上方显示操作表 我的意思是 即使操作表视图处于可见模式 我也能够看到选项卡栏控制器 因此 请建议如何从选项卡栏控制器上方查看 是否可以 其次 如何更改操作表的背景颜色和取消按钮背景颜色 请帮我 谢谢你 马丹 莫汉 要从
  • NSString 对象的最大长度是多少?

    NSString 对象中可以保存的最大字符串大小是多少 这会动态变化吗 我假设 NSString 的硬限制是 NSUIntegerMax 个字符 因为 NSString 的索引和大小相关的方法返回 NSUInteger 由于当前能够运行 i
  • 为什么 iPhone 应用程序的 main() 函数没有机会完成?

    考虑以下main 大多数 iPhone 应用程序都采用以下方法 int main int argc char argv NSAutoreleasePool pool NSAutoreleasePool alloc init int retV
  • 如何将 NSMutableArray 添加到 NSMutableArray Objective-c

    我正在从 Java 切换到 Objective c 但遇到了一些困难 我已经搜索过这个问题但没有取得太大成功 我有一个存储 NSMutableArrays 的 NSMutableArray 如何向数组添加数组 您可以在数组中存储对另一个数组
  • iOS 上关键 ClientState 警告的默认访问速度缓慢

    在测试我的 iOS 应用程序时 我收到 对关键 ClientState 的默认访问速度慢 耗时 0 034635 秒 容差为 0 020000 警告 它似乎是间歇性发生的 我试图环顾四周看看它是关于什么的 但我并不完全确定 任何帮助表示赞赏
  • gestureRecognizer shouldReceiveTouch 持续存在于已释放的视图中导致崩溃

    我有一个相当简单的 UITableView 它在堆栈上推送一个新视图 新视图有一个像这样初始化的gestureRecognizer synthesize swipeGestureLeft void viewDidLoad swipeGest
  • 从字典创建 Swift 对象

    如何根据 Swift 字典中的查找值动态实例化类型 希望这对其他人有用 我们需要进行一些研究才能弄清楚这一点 目标是避免巨大的 if 或 switch 语句从值创建每个对象类型的反模式 class NamedItem CustomStrin
  • Bootstrap 响应式表格在 iOS 设备上无法垂直滚动

    这就是我所拥有的 div class table responsive table class table style background transparent table div 我正在使用以下 bootstrap css 文件 ht
  • iOS 7 NS 单线程安全合并冲突

    重新排序两行后 在单线程应用程序上保存简单的数据时遇到问题 我已经成功地简化了编码以重现错误 并且希望其他人尝试这一点时得到第二个意见 这是一次健全性检查 因为我怀疑 iOS 7 引入的核心数据问题 而这在 iOS 6 中工作正常 首先 启
  • UIScrollView 与 UITabBarController 切断

    我有一个 UIScrollView 我将其放置在视图中 界面生成器文档 xib m h 但是 UIScrollView 的下半部分被剪切 并且由于我有一个 UITabBarController 而没有显示其下半部分 我在 appdelega
  • iOS绘图3D图形库[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在搜索一个可以帮助我绘制 3D 图表的库 我想要类似的东西这一页 http www math uri edu bkaskosz fla
  • 使用标识符启动 iPhone 应用程序

    我正在尝试在我的应用程序中启动应用程序 例如 如果我按下 testApp1 中的按钮 它应该打开 testApp2 有没有办法用应用程序标识符来做到这一点 我听说过一种名为的未记录方法launchApplicationWithIdentif
  • Swift 中通过可选绑定进行安全(边界检查)数组查找?

    如果我在 Swift 中有一个数组 并尝试访问超出范围的索引 则会出现一个不足为奇的运行时错误 var str Apple Banana Coconut str 0 Apple str 3 EXC BAD INSTRUCTION 但是 我会
  • 如何将设备上未保存的图片上传到dropbox帐户?(IOS)

    Dropbox RestClient 仅保存文件 所以我想先将图像保存在本地文件夹中 然后上传它 结果它保存了文件 但它已损坏 NSString localPath NSBundle mainBundle pathForResource I
  • 将 NSFetchedResultsController 添加到项目后出现问题

    我设置 CoreData 时没有NSFetchedResultsController一切都保存得很好 切换到之后NSFetchedResultsController 我在尝试保存图像时遇到奇怪的错误 这是我用来保存图像的代码 void sa
  • 如何从第二个视图弹回到根视图?

    我使用 2 将 3 个视图 根视图 第 1 个视图 第 2 个视图 连接在一起modal在 Apple Watch 故事板中继续 1 在根视图中 按下 保存 按钮后 将显示第一个模态视图 2 在第一模态视图中 一旦按下 500 按钮 将显示
  • Facebook 登录打开错误的应用程序

    我正在尝试使用 facebook 实现应用程序的登录 但每次我尝试登录时 它都建议打开错误的应用程序 我尝试了一些在这里找到的东西 但没有成功 在 Facebook 的开发者页面上我添加了一个后缀 我的 plist 如下 有谁知道发生了什么
  • dispatch_semaphore_t 重用 - 我在这里缺少什么?

    我有一些代码 其中使用dispatch semaphore t 来表示操作完成 当信号量是成员变量时 它的行为似乎不正确 我将展示有效的示例代码和似乎无效的示例代码 implementation someClass dispatch sem
  • 具有隐式授权的 OAuth 应用程序中的客户端模拟

    来自 OAuth 草案 隐式section https datatracker ietf org doc html draft ietf oauth v2 31 section 1 3 2 在隐式授权流程期间发出访问令牌时 授权服务器不对客
  • TestFlight 安装的应用程序因 Swift 包管理器依赖项而崩溃

    我们已经迁移了一些 CocoaPod 依赖项 以便在 Xcode 11 中使用 Swift Package Manager 进行构建和链接 但是 每当我们将应用程序提交到 AppStore Connect 并使用 TestFlight 进行

随机推荐

  • 如何在delphi10中使用IdHTTP登录Instagram网站

    我正在尝试在 Delphi 中使用 idhttp 登录 Instagram 网站 我使用谷歌浏览器开发者工具来获取数据 这是我到目前为止所尝试过的 procedure TForm1 Button1Click Sender TObject v
  • 如何从数组中删除元素

    您好 我正在编写一些遗留代码 其内容类似于 for int i results Count 1 i gt 0 i if someCondition results Remove results i 对我来说 在仍然迭代循环的同时删除元素似乎
  • 如何从jslib插件Unity webgl调用外部javascript函数

    我现在正在开发一个 webgl 项目 我正在尝试从plugin jslib 调用index html 中的javascript 函数 我用谷歌搜索了一些方法 似乎它们不起作用 有没有正确且简单的方法来做到这一点 下面的代码是我尝试过的 索引
  • 我可以在函数(不是函数组件)内使用钩子吗

    这是我想使用我的钩子的地方 以便我可以在应用程序运行期间更改一种状态 export const simpleFunction gt state gt here is the hook 我知道反应钩子应该用在功能组件中 但是上面提到的情况又如
  • 为什么带着色器的粒子系统不起作用?三.js

    你好 有人可以帮我吗 我有这个着色器 它适用于 THREE Mesh 但不适用于 THREE Particle System 我希望每个粒子都有给定贴图 纹理 的一部分并相应地改变它们的位置 像这样http www chromeexperi
  • 使用 fread 计算行数而不读取整个文件[重复]

    这个问题在这里已经有答案了 我想使用 data table 来处理一个非常大的文件 它不符合记忆 我考虑过使用循环 适当增加跳过参数 来读取块上的文件 fread myfile csv skip loopindex nrows chunks
  • iPhone 上的 jQuery 更改事件

    我在 iPhone 4 上启动此功能时遇到问题 有什么办法吗 select change function alert you changed this 您是否尝试过 select live change function alert yo
  • 如何读取参数值,存在于规格中量角器的conf.js文件中

    例如 conf js exports config directConnect false multiCapabilities browserName firefox browserName chrome browserName inter
  • React:带参数调用函数会导致无限循环

    所以 我有一个组件可以使用 prop 渲染另一个组件 如下所示
  • indexedDB 中的 IN 运算符等效项

    我想执行这个查询 从属性中选择 其中 propertyCode IN field1 field2 field3 我怎样才能在 IndexedDB 中实现这一点 我尝试过这个东西 getData function indexName para
  • Android SQLite删除表实际上并没有删除行

    您好 我正在尝试通过以下查询删除表中的所有行 db beginTransaction db is a SQLiteDatabase object int deleted db delete user null null db endTran
  • C++ 预处理器 __VA_ARGS__ 参数数量

    简单的问题 我在网上找不到答案 在可变参数宏中 如何查找参数的数量 如果 boost 预处理器有解决方案 我可以接受 如果有影响 我会尝试将可变数量的宏参数转换为增强预处理器序列 列表或数组 以便进一步重新处理 我通常使用这个宏来查找一些参
  • 将文件中的数据解析成java,然后解析成mysql数据库

    我有以上述格式给出的 Data 文件 我正在用 java 编写一个程序 它将从 data 文件中获取值并将其放入缓冲区中 我的java程序通过JDBC连接到Mysql windows 所以我需要从上面格式给出的文件中读取值并将其放入缓冲区
  • 用于表单验证的正则表达式 1-9999

    我正在尝试编写一些表单验证 我需要输入之一为 1 9999 我对正则表达式一无所知 以前从未使用过它们 这是我的第一次尝试 1 9 1 9 1 9 1 9 d 9999 似乎不想工作 有人可以帮助我吗 谢谢 尝试下面的正则表达式 1 9 0
  • 如何使用 Jackson 将复杂的 Json 对象序列化为 HTTP Get 的 QueryString?

    假设我有以下对象 public class ComplexJacksonObject extends BaseJsonObject public int Start public int Count public Person MyPers
  • AWS DocumentDB 是否支持在单个查询中加入 3 个以上集合?

    是否可以使用单个查询将 AWS DocumentDB 中的 3 个独立集合连接在一起 类似于此处线程的解决方案 如何在 MongoDB 聚合管道中执行嵌套 连接 连接 3 个或更多集合 我觉得可能不会 但我不认为 AWS 会直接在任何地方明
  • 为具有属性的转换器创建自定义标签

    我在网上找到了一个转换器 并尽可能将其更改为我的需要 问题是 我需要添加一个必须检查的标志 即字符串 并且转换器必须将某种模式应用于字符串 自定义转换器 FacesConverter convtest UrlConverter public
  • C 中的通用堆栈

    我正在用 C 实现通用堆栈 并且在 stackPop 方法中遇到问题 我的结构如下 堆栈 h 文件 typedef struct void elems int elemSize int allocLength int logLength v
  • 如何使用Golang生成长度范围内唯一的随机字符串?

    我想在长度范围内生成唯一的随机字符串 例如 我设置长度为10 并且每次生成的字符串都是唯一的 独特到什么程度才算独特呢 如果普遍唯一 请参阅 https en wikipedia org wiki Universally unique id
  • Sprite Kit - 应用脉冲向角色发射射弹

    我正在使用 Sprite Kit Objective C 开发游戏 在这款游戏中 你控制一只飞行中的小鸟 箭和其他不好的射弹会从屏幕的右 上 下侧向你射击 我使用物理而不是 SKAction 来完成此任务 因为我希望它看起来尽可能逼真 所以