游戏剑网3人物面向扇面角度

3458人阅读
一般来说,游戏角色自动寻路寻找某位npc,为了显得更自然,都会走到目标npc附近,而不是npc所在的坐标点,这时寻路后人物的朝向往往便无法保证。
如今很多的游戏,人物都会有八个方向,为了让游戏更加逼真,在寻路到npc附近时,需要让角色朝向npc,那么如何确定人物朝向呢?我们可以根据角色和npc与Y周之间的夹角来判断。
当角色在目标npc的75~105度位置则角色应该朝向左边,在15~75时,则应该朝向左上方,如此类推。那么问题其实可以化为简单的平面数学问题。
在一平面内,角色坐标p1(x1,y1,)&&& npc坐标p2(x2,y2)
我们以npc的坐标为参考系,那么p2将变为(0,0), p1将变为(x1-x2,y1-y2),我们可以将p1视为一向量,求向量的角度
var angle:Number = Math.atan2(p1.x,p1.y);
求出来的angle是弧度值,还需要转为为角度
angle = angle*(180/Math.PI) 这样就可以根据角度判定角色的朝向了
var vMyX:Number = _
var vMyY:Number = _
var vNpcX:Number = _
var vNpcY:Number = _
vMyX -= vNpcX;
vMyY -= vNpcY;
vNpcX = 0;
vNpcY = 0;
var angle:Number = Math.atan2(vMyX,vMyY);
angle = angle*(180/Math.PI)
if(angle&0){
if(angle&-15){
setDir(4);//面向上
if(angle&=-15 && angle&=-75){
setDir(5);//面向右上
if(angle& -75 && angle&=-105){
setDir(6);//面向右
if(angle& -105 && angle&=-165){
setDir(7);//面向右下
if(angle&-165){
setDir(0);//面向下
if(angle&=75 && angle&=105){
setDir(2);//面向左边
if(angle&=15 && angle&75){
_setDir(3);//面向左上
if(angle&15){
setDir(4);//面向上
if(angle&105 && angle&165){
_setDir(1);//面向左下
if(angle&165){
setDir(0);//面向下
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:90763次
积分:1740
积分:1740
排名:第16530名
原创:75篇
转载:16篇
(4)(4)(8)(16)(5)(2)(2)(8)(5)(1)(3)(5)(1)(4)(10)(12)

参考资料

 

随机推荐