[转]关于9宫格方向(不是scrollRect)

本文介绍了一种利用数字表示9宫格方向的方法,并详细解释了如何通过简单的数学运算判断对象之间的相对位置,同时提供了使用该方法进行角色动画方向控制的具体实现。

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

[url]http://uh.9ria.com/space-12147-do-blog-id-5690.html[/url]

[0,1,2,
3,4,5,
6,7,8]

9宫格是用数字来表示方向的一种办法,其意义就是
["leftup","up","rightup",
"left",null,"right",
"leftdown","down","rightdown"]
用相应的数字表达一种相对位置状态,要点需要4这个中间点,而且左上角是0

在表达相对位置的时候,这种方法最终会比较简洁,诸如:
判断左右:a % 3 < b % 3
判断上下:int(a / 3) < int(b / 3)
而不需要再写多个||

上面的可以说是将9宫格方式拆解成横纵两个方向的办法,更重要的是反向的做法
你只需要用下面的逻辑
(是左边 ? 0 : 是右边 ? 2 : 1) + (是上面 ? 0 : 是下面 ? 6 : 3)
就可以连写出一个表达式直接得出方向值,而不再需要写9个case


诸如,p是一个表示人物移动速度p(vx,vy)的Point坐标,labelNames是一个包含8方向(加上站立是9)的位图动画序列,每项是一个方向的序列,只需要用下面的代码就能直接取出当前应当显示的位图序列

var newState:Array = labelNames[
(p.x < -Math.abs(p.y / 2) ? 0 : p.x > Math.abs(p.y / 2) ? 2 : 1) +
(p.y < -Math.abs(p.x / 2) ? 0 : p.y > Math.abs(p.y / 2) ? 6 : 3)
];

所以表达方向值应当毫不犹豫的使用9宫格方式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值