这是这几天碰到的问题,直线穿透性持续攻击,在一条直线上只要有怪物经过,就受到伤害。最后发现如此答案:
if self.imageShoot:getRotation()<0 then
self.shootTwo.rt = (self.imageShoot:getRotation() + 365)
self.shootTwo.rd = (self.imageShoot:getRotation() + 355) % 360;
else
self.shootTwo.rt = (self.imageShoot:getRotation() + 5) % 360;
self.shootTwo.rd = (self.imageShoot:getRotation() - 5) % 360;
end
for i,enemy in pairs(enemyList) do
local rM = (90 - 180 * cc.pToAngleSelf(cc.pSub(cc.p(enemy:getPosition()),cc.p( self:getPosition()))) / 3.1415926535) % 360;
if (rM >=self.shootTwo.rd and rM <=self.shootTwo.rt) then
local harmHP = self:getAttack()
enemy:decCurrHP(harmHP)
end
end
塔中心点与怪物中心点的向量和x轴的夹角(弧度l)与直线与x轴的夹角取攻击范围值比较,l在攻击范围则受到伤害。