需求:绕远做圆周运动 并且精灵的角度要随着位置的改变而改变

网上有很多做圆周运动的代码,但是要不然就是角度不变 要不然就是cocos版本老旧

摘了一段3.x的圆周运动,自己加了角度变换

圆周运动,已知,圆点坐标为(0,0)固定不变和圆周上任意一点的坐标。只需要求 圆周上这个点 所在的切线 与x周的角度就行。

Math.atan2(y:number,x:number) 这个函数刚好符合需求

export class xxController extends Component {

  // 汽车
@property(Sprite)
sprCar: Sprite = null; // 圆心
@property
circleCenter: Vec2 = v2(0, 0); // 半径
@property
circleRadius: number = 250; // 车速
@property
carSpeed: number = 200; // 弧度
radian: number = 0; onLoad() {
this.schedule(this.circleMove, 0.01);
} circleMove(dt) {
// 先计算弧度
this.radian += dt * (this.carSpeed / 100);
let x = this.circleRadius * Math.cos(this.radian) + this.circleCenter.x;
let y = this.circleRadius * Math.sin(this.radian) + this.circleCenter.y;
this.sprCar.node.position = v3(x, y, 0);
// Math.atan2 反正切函数 返回从X轴到某个点的角度(以弧度为单位)。
let angle = Math.atan2(y, x) / (Math.PI / 180);
this.sprCar.node.angle = angle; console.log('x = ' + x + ' y = ' + y + ' angle = ' + angle); } }

最新文章

  1. leetcode -- Convert Sorted List to Binary Search Tree
  2. 手机QQ内置网页,微信内置网页中进行分享到QQ和微信的操作
  3. 使用时间戳和sequence生成主键的function
  4. Heroku空项目 Git本地Push代码错误 以及 Heroku Web启动错误
  5. 注意页面上的时间戳可能会成为bd快照的时间_快照不更新的原因
  6. App Previews操作经验
  7. 判断UpLoader是否安装了Flash
  8. win7 64位安装mongodb及管理工具mongoVUE1.6.9.0
  9. ↗☻【编写可维护的JavaScript #BOOK#】第9章 将配置数据从代码中分离出来
  10. cocos2d-x 2.0 拖尾效果分析
  11. 虚拟机下linux上网
  12. MVC 接受Flash上传图片
  13. codefirst mvc Self referencing loop detected for property
  14. android如何与asp.net服务端共享session
  15. 201521123075 《Java程序设计》第10周学习总结
  16. 计算机网络三:域名、IP地址和TCP/IP协议
  17. Python数值类型
  18. Mybatis中#{}和${}传参的区别及#和$的区别小结
  19. vue插槽,也就是子页面、父页面相互传值的另一写法
  20. 胜利大逃亡 HDU1429 (bfs)

热门文章

  1. JDBC 使用详解
  2. 微信小程序刚注册快速达到1000uv
  3. eclipse首次使用基本设置
  4. 4月20日 python学习总结 套接字工作流程
  5. Go语言- import 导入包的语法
  6. bzoj3144 [HNOI2013]切糕(最小割)
  7. AFO以后的机房游记
  8. 论文解读(MVGRL)Contrastive Multi-View Representation Learning on Graphs
  9. vue渐进式?
  10. 是否可以从一个static方法内部调用非static方法?