菜鸟教程小白 发表于 2022-12-13 10:29:42

ios - 如何检查 CCSprite 中的像素是否透明


                                            <p><p>每个 CCSprite 都是一个矩形区域,但它的某些部分是可见的,表示我们看到的图像而其他部分不可见。所以我想知道当我触摸CCsprite时触摸点是可见区域还是透明区域,有什么方法可以检查,比如获取触摸点的像素颜色??</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>使用 OpenGL API 可以做到这一点,但这是错误的解决方案。我建议检测 Sprite 形状内的点击点(将手动定义)。要计算边界形状,您可以使用以下工具:<a href="http://itunes.apple.com/us/app/spritehelper/id416068717?mt=12&amp;ls=1" rel="noreferrer noopener nofollow">SpriteHelper</a> .要检查多边形内的点(即使是非凸的),有很好的算法:<a href="http://paulbourke.net/geometry/polygonmesh/" rel="noreferrer noopener nofollow">Determining if a point lies on the interior of a polygon</a> .我在我的 iPhone 游戏中使用了这种方法。</p>
<p>与直接检查像素不透明度相比,这种方法的效率:</p>
<ul>
<li>性能:要在 OpenGL 中获取像素,您需要锁定纹理并从中读取数据,这会降低 FPS</li>
<li>准确性:点击不是鼠标点击,它表示某个区域,因此您可能会检查 Sprite 形状内的某个区域(例如点击圈)</li>
<li>灵 active :您可以根据需要调整形状</li>
</ul>
<p>PS:如果您确实想检查像素,一个好的解决方案是制作纹理像素的附加 bool 图(每个位响应像素阈值)。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 如何检查 CCSprite 中的像素是否透明,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/8678418/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/8678418/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 如何检查 CCSprite 中的像素是否透明