ios - 为无尽的运行游戏创建动态大小的 SKSpriteNode 平台
<p><p>我正在为 IOS 创建我的第一个 Endless Runner 游戏,我希望它尽可能动态。我想创建一个大型“平台”图像,然后使用该图像创建各种大小的平台。</p>
<p>这个想法是随机选择一个数字作为平台的宽度,然后生成 Sprite 和主体以匹配所选尺寸。完成此操作后,仅使用图像的一部分将图像填充到 Sprite 中。</p>
<p>目前我正在使用以下内容,但这会根据 UIImage 的大小创建节点。</p>
<pre><code>SKSpriteNode *spritePlatform = [ initWithImageNamed:@"Platform"];
;
spritePlatform.name = @"Platform";
spritePlatform.physicsBody = ;
spritePlatform.physicsBody.affectedByGravity = NO;
spritePlatform.physicsBody.dynamic = NO;
// 1
spritePlatform.physicsBody.usesPreciseCollisionDetection = YES;
// 2
spritePlatform.physicsBody.categoryBitMask = CollisionCategoryPlatform;
spritePlatform.physicsBody.contactTestBitMask = CollisionCategoryPlayer;
;
;
</code></pre>
<p>所以理想情况下我想</p>
<ol>
<li>根据随机宽度和固定高度创建 Sprite 。</li>
<li>使用较大图像的一部分来填充 Sprite 。</li>
</ol>
<p>有什么想法可以做到这一点吗?</p>
<p>谢谢</p></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><blockquote>
<p>Create a sprite based upon a random width and fixed height.</p>
</blockquote>
<p>为 <code>width</code> 选择一个随机数很简单。您可以使用 <a href="https://stackoverflow.com/questions/29955823/whats-the-difference-between-arc4random-and-arc4random-uniform-in-swift" rel="noreferrer noopener nofollow">arc4random_uniform</a>并确保选择合理范围内的数字(小于您的平台图像)。</p>
<blockquote>
<p>Use part of a larger image to fill in the sprite.</p>
</blockquote>
<p>这可以通过使用 <a href="https://developer.apple.com/library/prerelease/ios/documentation/SpriteKit/Reference/SKTexture_Ref/index.html#//apple_ref/occ/clm/SKTexture/textureWithRect:inTexture:" rel="noreferrer noopener nofollow">textureWithRect:inTexture:</a> 来完成.第一个参数是单位坐标空间中的一个矩形,它指定要使用的纹理部分。第二个参数是创建新纹理的整个平台纹理。</p>
<p>以下是有关如何设置每个平台的大小/部分的提示:</p>
<ol>
<li><p>(0, 0)是整个平台坐标的左下角。</p></li>
<li><p>x/y坐标的范围是0到1,不是平台图像的真实尺寸。</p></li>
</ol>
<p>给定由平台图像<code>platformAllTexture</code>创建的纹理和第一步中随机的<code>width</code>,平台纹理可能是:</p>
<pre><code>// Fixed height is set as half of the platform image
SKTexture *platformTexture = [SKTexture textureWithRect:CGRectMake(0, 0, width/platformAllTexture.size.width, 1/2.0)
inTexture:platformAllTexture];
</code></pre>
<p>这样,您就获得了动态尺寸平台的纹理<code>platformTexture</code>。</p>
<p>在上面的例子中,如果矩形被定义为<code>CGRectMake(0, 0, 1/3.0, 1/2.0)</code>,你会得到类似的结果:</p>
<p> <a href="/image/qforD.png" rel="noreferrer noopener nofollow"><img src="/image/qforD.png" alt="enter image description here"/></a> </p></p>
<p style="font-size: 20px;">关于ios - 为无尽的运行游戏创建动态大小的 SKSpriteNode 平台,我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/33593402/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/33593402/
</a>
</p>
页:
[1]