摇杆控制方向原理_手游摇杆(零)摇杆设计原理

该博客介绍手游摇杆系列设计,这是手游开发常用设计。摇杆有固定式和跟随式两种,分别说明了其显示的更新策略。还介绍了方向控制,分为四方向和八方向,通过计算内外环圆心角度判断方向,最后可根据方向和速度修改人物坐标。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

下面给大家介绍的这个手游摇杆系列,是当前手游开发中常用到的设计。摇杆作为ARPG游戏中的标配,目前摇杆主要有两种方式: 1. 固定式 2. 跟随式

一、摇杆显示

假设 外环旧的位置:posBig 外环新位置:posBigNew 外环半径:R 外环圆心:O 内环旧的位置:posSmall 外环圆心:o 内环新的位置:posSmallNew 触摸位置:p

1 固定式

内环在外环范围内移动; 外环位置固定,不能移动;

更新策略: 判断触摸位置p是否在外环内,是则直接内环设置内环到p点,如果不是,则:

op = Vec2(O.x - posSmall.x, O.y - posSmall.y); // 计算新旧位置之间的向量

op.normallize();// 归一化

posSmallNew = posSmall + op * R

2 跟随式

内环始终跟着p点移动; 外环当触摸点P在外环范围内时,大环不移动;否则,外环会跟随内环移动;

更新策略: 如果触摸点超出之后,外环位置计算规则为

判断触摸位置p是否在外环内,是则直接内环设置内环到p点,如果不是,则:

op = Vec2(p.x - posSmall.x, p.y - posSmall.y); // 计算新旧位置之间的向量

op.normallize();// 归一化

posBigNew = posSmall - op * R

二、方向控制

方向控制分为四方向和把方向两种,有一种统一的计算方式,就是计算内外环圆心的角度,然后根据角度将其定义为四方向:上下左右,八方向加上:左上,右上,左下,右下。

角度可以使用三角函数计算:

//得到两点x的距离

float x = o.x - O.x;

//得到两点y的距离

float y = o.y - O.y;

//算出斜边长度

float l = sqrt(Math.pow(x,2) + Math.pow(y,2));

//得到这个角度的余弦值

var cosAngle = x / l;

//通过反余弦定理获取到期角度的弧度

var rad = acos(cosAngle);

四方向判断:

if(p_rad>=-PI/4&&p_rad

R_Direction="right";

else if(p_rad>=PI/4&&p_rad<3*PI/4)

R_Direction="up";

else if((p_rad>=3*PI/4&&p_rad<=PI)||(p_rad>=-PI&&p_rad

R_Direction="left";

else if(p_rad>=-3*PI/4&&p_rad

R_Direction="down";

八方向判断:

if(p_rad>=-PI/8&&p_rad

R_Direction="right";

else if(p_rad>=PI/8&&p_rad<3*PI/8)

R_Direction="up";

else if((p_rad>=7*PI/8&&p_rad<=PI)||(p_rad>=-PI&&p_rad

R_Direction="left";

else if(p_rad>=-5*PI/5&&p_rad

R_Direction="down";

else fi(p_rad>=5*PI/8&&p_rad<7*PI/8)

R_Direction = "left_up";

else if(p_rad>=-7*PI/8&&p_rad

R_Direction = "left_down";

else if(p_rad>=PI/8&&p_rad<3*PI/8)

R_Direction = "rigth_up";

else if(p_rad>=-3*PI/8&&p_rad

R_Direction = "rigth_down";

后面就是根据方向和任务移动的速度,修改人物的坐标值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值