Cocos2d 和 iOS:无法理解使用 ccBezierConfig 的控制点的使用

2023-12-08

编辑:如果问题写得不好,请看视频(3),与本页底部相同的链接。

我正在尝试使用绘制一条非常简单的贝塞尔曲线ccBezier配置和 Cocos2D。在维基百科上阅读时,我试图理解一些控制点并发现了这张图片:

http://upload.wikimedia.org/wikipedia/commons/thumb/b/bf/Bezier_2_big.png/240px-Bezier_2_big.png

如果您查看我从中获取图像的维基百科页面,您会看到一个很酷的动画。看一看here.

这是我使用的代码:

        CCSprite *r = [CCSprite spriteWithFile:@"hi.png"];
        r.anchorPoint = CGPointMake(0.5f, 0.5f);
        r.position = CGPointMake(0.0f, 200.0f);

        ccBezierConfig bezier;
        bezier.controlPoint_1 = CGPointMake(0.0f, 200.0f);
        bezier.controlPoint_1 = CGPointMake(180.0f, 330.0f);
        bezier.endPosition = CGPointMake(320.0f,200.0f);

        id bezierForward = [CCBezierBy actionWithDuration:1 bezier:bezier];
        [r runAction:bezierForward];
        [self addChild:r z:0 tag:77];

该应用程序在纵向模式下运行,我的猜测与控制点相匹配1我的代码中的内容是:

sprite.position should correspond to P0
bezier.controlPoint_1 should correspond to P0 
bezier.controlPoint_2 should correspond to P1
bezier.endPosition  should correspond to P2

我确实尝试了两种方法。通过设置精灵的位置和不设置它。

我假设位置应该与维基百科模式中的 controlPoint_1 相同1只有三点。

我得到一个我不太明白的输出。我制作了一个小视频,是一个私人 YouTube 视频:

观看视频请点击这里


好吧,答案很简单......

The 二次贝塞尔曲线不是cocos2d画的。相反,请检查相同的 wiki 页面三次贝塞尔曲线。这就是你应该关注的。

  1. 初始位置是精灵的位置(P0)
  2. 控制点 1 和 2 分别是 P1 和 P2。
  3. 终点就是终点。

不错的视频,顺便说一句,我很喜欢它 xD。


证据来自CCActionInterval.hcocos2d库中的文件:

/** An action that moves the target with a cubic Bezier curve by a certain distance.
 */
@interface CCBezierBy : CCActionInterval <NSCopying>
{
    ccBezierConfig config;
    CGPoint startPosition;
}

这个链接应该帮助你构建你的三次贝塞尔曲线直观地,而不是调整值并运行应用程序。

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

Cocos2d 和 iOS:无法理解使用 ccBezierConfig 的控制点的使用 的相关文章

  • 移动一个精灵时所有精灵都不可见[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我的场景中有 7 个精灵 所有精灵都添加到可变数组中 当我触摸一个精灵来移动时 其他精灵在我触摸移动方法后不可见 这是我的代码 if se
  • 我的 Cocos2D-iPhone 游戏可以支持 VoiceOver 吗?

    我正在制作一款游戏 玩家通过动作对声音做出反应 由于玩游戏不需要视觉元素 而且许多人都是闭着眼睛玩的 所以不完全兼容 VoiceOver 似乎很遗憾 我目前正在使用 Cocos2D iPhone 和 CocosDenshion 来处理音频
  • 在 spritekit 中沿着 UIBezierPath 绘制节点

    我目前正在 spritekit 中开发一款游戏 其中有游戏关卡地图 我正在使用 UIBezierPath 作为我希望关卡节点遵循的路径 我遇到的唯一问题是尝试沿路径绘制它们 并且想知道如何将它们添加到场景中 以便将它们添加到路径中每一个都与
  • 将 cocos2d 视图添加到 UIView

    我已将 cocos2d 2 0 集成到现有的 iOS 项目中 并希望能够创建一个视图并将其作为子视图添加到现有视图中 cocos2d 设置代码应该放在哪里以及 cocos2d 视图如何在 UIView 中可见 我已关注雷 文德利希教程 ht
  • UIBezierPath 的橡皮擦

    我正在使用 UIBezierPath 在 iPad 应用程序中进行免费手绘 我想用橡皮擦乌贝济耶路径 questions tagged uibezierpath 不过 我想only擦除其路径中的图形 我cannot使用路径颜色作为背景颜色
  • UIBezierPath 撤消绘图重绘 UIImageView 的图像

    我试图通过重绘我创建的 NSMutableArray 中的所有 UIBezierPath 和关联的 UIColor 来重绘 UIImageView 的图像 减去点击撤消 UIButton 时的最后一个路径 但是 在这种情况下 UIImage
  • cocos2d中捏合时如何缩放精灵?

    我正在开发一个应用程序 我必须显示 50 到 70 个图像 精灵 我制作了一个滚动条 可以滚动所有这些图像 但我也想缩放这些图像 我一直在关注 http ganbarugagames com 2010 12 detecting touch
  • 在 Core Graphics 中创建一个具有多色段的圆

    我正在尝试绘制一个饼图 该饼图由大小相等的部分组成 每个部分具有不同的颜色 我的代码基于此SO 在SWIFT中画一个圆弧段进度 https stackoverflow com questions 31807846 draw a circul
  • UIBezierPath 具有圆角边缘的三角形

    我设计了以下代码来生成UIBezierPath 该路径在CAShapeLayer掩盖一个UIView 请注意 视图的高度和宽度是可变的 这段代码生成一个具有锐利边缘的三角形 但我想使角变圆 我已经尝试过addArcWithCenter li
  • 如何绘制 UIBezierPath

    这就是我想做的 我有一个 UIBezierPath 我想将它传递给某种方法来绘制它 或者简单地从创建它的方法中提取它 我不确定如何指示应在哪个视图中绘制它 所有绘图方法都必须以 void drawRect CGRect rect 我可不可以
  • 《How To Make a Tile-Based Game with Cocos2D 2.X》用cocos2d V3制作本教程

    我有一个小问题 在本教程中如何使用 Cocos2D 2 X 制作基于图块的游戏 http www raywenderlich com 29458 how to make a tile based game with cocos2d 2 x使
  • 在cocos2d中添加UIViewController

    我想在 cocos2d 项目中显示 UIViewController 所以我在我的 CCLayer 类中执行此操作 void displayMainMenu CGSize screenSize CCDirector sharedDirect
  • SceneKit 绘制曲线

    我想用 SceneKit 画一条贝塞尔曲线 并认为这可行 func drawCurvedLine let scene SCNScene let scnView self view as SCNView scnView scene scene
  • cocos2d-iphone-2.1-beta2 中的 CCScrollLayer 问题

    您好 我遇到了最新 cocos2d beta 中 CCScrollLayer 中所述的问题 主要是在编译时我得到 use of undeclared identifier CC GL BLEND 有没有办法解决这个有人发现的问题 您可以安全
  • 如何订阅设备方向(非界面方向)事件?

    在我的应用程序中 我想在设备旋转 方向更改 的情况下调用 CCScene myscene 中的某些方法 我禁用了自动旋转 因为我希望它不会发生 问题是 我想根据我的设备方向改变场景中的重力 我的代码 void onEnter super o
  • 将圆角应用于使用 UIBezierPath 创建的圆弧

    我正在研究一个使用 UIBezierPath 创建的圆形进度条 进度条如下图所示 我的问题是 如何使圆弧的边缘变成圆形而不是矩形 我用来绘制圆弧的代码如下 Draw the arc with bezier path int radius 1
  • UIBezierPath 的起始和结束角度?

    我在 iOS 中使用如下代码编写了半圆UI贝塞尔路径 and CAShape层 clockWiseLayer CAShapeLayer alloc init CGFloat startAngle M PI 2 CGFloat endAngl
  • 将箭头附加到 UIBezierPath

    我需要你的帮助 我正在尝试使用具有可变宽度的 UIBezierPaths 创建一个图形 并由带有两个控制点的贝塞尔曲线组成 现在我想在这些路径的末尾 右侧 添加箭头 有没有办法做到这一点 即通过附加一个包含三角形的较小线宽的子路径 这是我想
  • UIBezierPath containsPoint:无法正常工作?(更新:超级视图中的触摸位置如何处理?)

    所以我有 2 个视图可以绘制贝塞尔路径然后返回路径 然后我需要检查路径是否包含我在以下帮助下执行此操作的点 path containsPoint currentObject position 它适用于其中一种观点 但不适用于另一种观点 一个
  • Cocos2d 变色精灵

    我需要我的精灵从一种颜色过渡到另一种颜色 然后不断地 比如蓝色 然后绿色 然后紫色 但我找不到任何好的动作 我想知道 我应该使用动画吗 或者是否有为此采取的联合行动 您可以使用 CCTintTo 操作来更改精灵的颜色 sprite runA

随机推荐