向量 Vector
计算公式
向量
向量指具有大小和方向的量
在笛卡尔坐标系中,向量可以分散为沿x轴和y轴的两个分量,
假设向量V方向和x轴正方向之间的夹角角度 = a
则V沿x轴和y轴的分量分别是:
1 | x = |V|cos(a) |
在js中提供了一些三角函数的方法,使用的基本都是弧度制,
弧度制和角度制的公式关系如下:
1 | 1° = Pi/180 |
1 | const radian = this.node.angle * Math.PI / 180 |
实现
这里要实现的功能是:
- 俯视角角色跟随鼠标位置旋转
- 鼠标右键控制子弹沿角色正前方发射出去
每一帧的更新都要涉及到2个计算
- 子弹Node的旋转角度转弧度
- 计算子弹移动分量
1
2
3
4
5
6
7
8
9
10
11export default class NewClass extends cc.Component {
speed:number = 100
update (dt) {
// 角度制转弧度制
const radian = (this.node.angle + 90) * Math.PI / 180
// 计算分量
this.node.x += this.speed * dt * Math.cos(radian)
this.node.y += this.speed * dt * Math.sin(radian)
}
}
首先实现玩家跟随鼠标旋转:
- 监听鼠标移动事件,记录鼠标点位
- 每帧对玩家Node的angle进行更新
1 | export default class Player extends cc.Component{ |
实现子弹超前发射:
- 监听鼠标点击事件
- 创建子弹节点
- 初始化子弹角度
- 界面加入子弹
1 | cc.find('scene').on(cc.Node.EventType.MOUSE_UP, (event:cc.Event.EventMouse)=>{ |