gpt4 book ai didi

ios7 - 创建跳跃 Action

转载 作者:行者123 更新时间:2023-12-02 21:36:39 26 4
gpt4 key购买 nike

我在 spritekit/IOS 中工作,我有一个按钮,当它被点击时会运行一个 Action 。该按钮工作正常,但我的操作很糟糕。单击我运行此操作。

actionMove=[SKAction moveTo:CGPointMake(300,300)duration:2.0];

然后导致我的 Sprite 在那个位置做一个旋转的飞踢。我需要一些帮助,因为我尝试用

替换 y 轴
_sprite.position+10 

但是它给了我一个错误。谢谢

最佳答案

你需要的是 Action moveByX:y:duration:...

有点。

你可以这样做......

SKAction *rise = [SKAction moveByX:0 y:10 duration:1];
SKAction *fall = [SKAction moveByX:0 y:-10 duration:1];
SKAction *jump = [SKAction sequence:@[rise, fall]];

然后你可以在你的 Sprite 上运行jump Action 。

这将使 Sprite 在 1 秒内向上移动 10 点,然后在 1 秒内向下移动 10 点。

但是,它看起来不像是跳跃。它不会加速或任何东西。

如果您在游戏中包含跳跃之类的内容,那么您通常会希望对地板进行某种碰撞检测,并使用力来移动您的 Sprite 而不是 Action 。

碰撞检测方法

Sprite Kit 物理引擎

一般有两种方法可以做到这一点。最简单(尽管学习曲线最长)是使用 SKPhysicsBodySpriteKit 中的内置物理引擎。

您将向您的角色添加一个 SKPhysicsBody 并向地板添加一个边界 SKPhysicsBody。

然后为了让角色跳跃,你可以使用类似...

[character.physicsBody applyImpulse:CGVectorMake(0, 1)];

这将立即对角色施加一个力,使其在空中“跳跃”。然后使用你内置的重力物理引擎,角色将开始减速并下落,直到它再次撞到地板上。

为此需要进行一些设置(比您想象的要少),但是一旦设置完成,剩下的就非常非常非常简单。

手动

手动操作是另一种情况。这不需要任何设置,但需要大量的数学运算。其工作方式是使用 update: 函数,然后每个更新周期计算角色的速度和位置,并相应地更新位置。

虽然你真的不想这样做。

通过将 SKPhysicsBody 添加到需要碰撞的对象(角色和地板),然后利用重力和 applyImpulse,让事情变得非常简单。它会让事情变得更容易,它会执行得更快,而且看起来会好一百万倍:D

关于ios7 - 创建跳跃 Action ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21237251/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com