|
|
|
@ -51,15 +51,19 @@ FrogTongue::FrogTongue(vf2d pos,vf2d targetPos,float lifetime,int damage,bool up |
|
|
|
|
} |
|
|
|
|
void FrogTongue::Update(float fElapsedTime){ |
|
|
|
|
geom2d::line<float>lineToTarget(pos,targetPos); |
|
|
|
|
vf2d drawVec=lineToTarget.vector().norm()*3; |
|
|
|
|
|
|
|
|
|
tongueLength=util::lerp(0,lineToTarget.length(),sin((lifetime*PI)/duration)); |
|
|
|
|
|
|
|
|
|
if(!friendly&&geom2d::overlaps(game->GetPlayer()->Hitbox(),lineToTarget)){ |
|
|
|
|
vf2d tongueEndPos=geom2d::line<float>(pos+drawVec,targetPos).upoint(sin((lifetime*PI)/duration)); |
|
|
|
|
geom2d::line<float>tongueLine(pos+drawVec,tongueEndPos); |
|
|
|
|
|
|
|
|
|
if(!friendly&&geom2d::overlaps(game->GetPlayer()->Hitbox(),tongueLine)){ |
|
|
|
|
PlayerHit(game->GetPlayer()); |
|
|
|
|
} |
|
|
|
|
if(friendly){ |
|
|
|
|
for(Monster&m:MONSTER_LIST){ |
|
|
|
|
if(geom2d::overlaps(m.Hitbox(),lineToTarget)){ |
|
|
|
|
if(geom2d::overlaps(m.Hitbox(),tongueLine)){ |
|
|
|
|
MonsterHit(m); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|