cocos2d-js导弹跟踪算法(一边追着目标移动一边旋转角度)
2024-08-31 15:31:46
跟踪导弹
function(targetPosition){
// 让物体朝目标移动的方法
var speed = 5;
var targetPoint = targetPosition;
var thisPoint = cc.p(this.x, this.y);
//求两点的差值,事实上就是两点的坐标相减
var delta = cc.pSub(targetPoint, thisPoint);
// 求当前对象和目标两点间的距离
var distance = cc.pDistance(thisPoint, targetPoint);
// 计算行走后的点xy坐标
var x2 = thisPoint.x +speed *delta.x /distance;
var y2 = thisPoint.y + speed *delta.y/distance;
if(100>=distance){
return true;
}
// 改动当前对象的位置
var newPosition = cc.p(x2, y2);
this.setPosition(newPosition);
// 旋转对应的角度
var x1 = thisPoint.x;
var y1 = thisPoint.y;
var deltaRotation = 90-Math.atan2(y2-y1,x2-x1)*180/Math.PI;
this.setRotation(deltaRotation);
return false;
}效果请看游戏地址 http://www.seraph-fd.cn/games/1/index.html
// 让物体朝目标移动的方法
var speed = 5;
var targetPoint = targetPosition;
var thisPoint = cc.p(this.x, this.y);
//求两点的差值,事实上就是两点的坐标相减
var delta = cc.pSub(targetPoint, thisPoint);
// 求当前对象和目标两点间的距离
var distance = cc.pDistance(thisPoint, targetPoint);
// 计算行走后的点xy坐标
var x2 = thisPoint.x +speed *delta.x /distance;
var y2 = thisPoint.y + speed *delta.y/distance;
if(100>=distance){
return true;
}
// 改动当前对象的位置
var newPosition = cc.p(x2, y2);
this.setPosition(newPosition);
// 旋转对应的角度
var x1 = thisPoint.x;
var y1 = thisPoint.y;
var deltaRotation = 90-Math.atan2(y2-y1,x2-x1)*180/Math.PI;
this.setRotation(deltaRotation);
return false;
}效果请看游戏地址 http://www.seraph-fd.cn/games/1/index.html
最新文章
- js基础练习一之tab选项卡
- linux 怎么完全卸载mysql数据库
- Java 集合系列16之 HashSet详细介绍(源码解析)和使用示例
- 关于Excel导入导出的用例设计
- 理解 Android Build 系统
- EDIUS和会声会影的区别
- Helpers\CSRF
- mysql:错误日志log_error:
- Tomcat内存溢出的原因
- Spark Streaming 入门指南
- 深入浅出NodeJS——异步I/O
- Selenide UI 自动化测试
- Git思维导图
- C++继承(一) 三种继承方式
- 配置ssh框架启动tomcat服务器报异常Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]
- 安卓动态分析工具【Android】3D布局分析工具
- linux c 语言之--fseek(),fseeko(),fseeko64()讲解 (转载)
- Codeforces 1096D Easy Problem 【DP】
- 【转载】webstorm忽略node_modules目录
- SDN学习笔记