Cocos2d-x   发布时间:2022-05-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了cocos2d-x v3.3 RotateTo and RotateBy(windows)大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

RotateTo和RotateBy可以使精灵旋转,区别在与RotateTo是旋转到指定的角度;而RotateBy是从当前角度旋转指定的角度。举个例子,假定精灵当前的角度是x,分别给RotateTo和RotateBy指定一个角度y,那么RotateTo和RotateBy最终的效果分别如下:

RotateTo:x → y

RotateBy:x → (x + y)

RotateTo和RotateBy各属一类,它们的继承关系如下:

接下来看每个类有什么接口,并结合实例说明。

RotateBy:

1、成员变量:

protected:
bool _is3D; // false: 使用带角度的3D旋转方式;true: 使用真正的3D旋转方式。
Vec3 _dstAngle; // 目标角度。
Vec3 _startAngle; // 起始角度。
Vec3 _diffAngle; // 目标角度与起始角度之差。

private:
CC_DISALLOW_COPY_AND_ASSIGN(RotateTo); // 禁用拷贝构造函数和拷贝赋值操作符。

2、成员方法:

(1) static RotateBy* create(float duration,float deltaAnglE);
static RotateBy* create(float duration,float deltaAngleZ_X,float deltaAngleZ_Y);
static RotateBy* create(float duration,const Vec3& deltaAngle3D);

例:

实现源码:

关键点总结:

疑问:

(2) virtual RotateBy* clone() const override;

例:

实现源码:

(3) virtual RotateBy* reverse(void) const override;

例:

实现源码:

关键点总结:

(4) virtual void startWithTarget(Node *target) override;
virtual void update(float timE) override;

例:

实现源码:

关键点总结:

RotateTo:

1、成员变量:

protected:
Vec3 _dstAngle; // 目标角度。
Vec3 _diffAngle; // 目标角度与起始角度之间的差值。

2、成员方法:

(1) void calculateAngles(float &startAngle,float &diffAngle,float dstAnglE);

例:

实现源码:

关键点总结:

(2) virtual void startWithTarget(Node *target) override;
virtual void update(float timE) override;

大佬总结

以上是大佬教程为你收集整理的cocos2d-x v3.3 RotateTo and RotateBy(windows)全部内容,希望文章能够帮你解决cocos2d-x v3.3 RotateTo and RotateBy(windows)所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。