| 514 | mVel.y = 0.0f; |
| 515 | } |
| 516 | f32 TMapObjWanwan::getAngleToRand() { |
| 517 | JGeometry::TVec3f posDiff, backPos; |
| 518 | posDiff.sub(mObjData->position, mPos); |
| 519 | f32 angle = mAttackAngle; |
| 520 | |
| 521 | getWanwanBackPos(&backPos); |
| 522 | backPos.sub(mObjData->position); |
| 523 | |
| 524 | JGeometry::TVec3f zDir; |
| 525 | mRotMtx.getZDir(zDir); |
| 526 | |
| 527 | if ((zDir.dotZX(posDiff) < 0.0f) |
| 528 | && (backPos.length() > mChainLength * 0.8f)) |
| 529 | { |
| 530 | f32 a = std::atan2f(posDiff.x, posDiff.z); |
| 531 | a += getRandRadius(90, 20); |
| 532 | angle = a; |
| 533 | for (; angle < -F_PI; angle += F_TAU); |
| 534 | for (; angle >= F_PI; angle -= F_TAU); |
| 535 | |
| 536 | } |
| 537 | return angle; |
| 538 | } |
| 539 | |
| 540 | f32 TMapObjWanwan::getRandRadius(u8 max, u8 min) { |
| 541 | u32 range = max - min; |