//--------------------------------------------------------------------- // ● フレーム更新 //--------------------------------------------------------------------- void GuideNamePlate::update() { const LVector3& player_pos = GameManager::getInstance()->getPlayer()->getPosition(); const LVector3& object_pos = mGameObject->getPosition(); //if ( ( player_pos - object_pos ).getLength() < 200 ) float length = (player_pos - object_pos).GetLengthSquared(); // プレイヤーと近ければ表示 if (!mIsNearPlayer && length < 60000) { mIsNearPlayer = true; mFadeOpacity.Start(mFadeOpacity.GetValue(), 1.0f, 20); mArrowSprite->SetVisible(true); mFrameSprite->SetVisible(true); mNameTextSprite->SetVisible(true); #ifdef GUIDE_UNDER mNameTextSprite->SetPosition(pos_2d.x, pos_2d.y + 10); #endif } // プレイヤーから離れていれば非表示 else if (mIsNearPlayer && length >= 60000) { mIsNearPlayer = false; mFadeOpacity.Start(mFadeOpacity.GetValue(), 0.0f, 20); } float op = GameFrontendManager::getInstance()->getGlobalFadeOpacity() * mFadeOpacity.GetValue(); mArrowSprite->SetOpacity(mFadeOpacity.GetValue()); // 矢印だけは Global が透明でも表示する mFrameSprite->SetOpacity(op); mNameTextSprite->SetOpacity(op); mFadeOpacity.AdvanceTime(1.0); // 完全にフェードアウトした場合は非表示にする if (mFadeOpacity.IsFinished() && mFadeOpacity.GetValue() == 0.0f) { mArrowSprite->SetVisible(false); mFrameSprite->SetVisible(false); mNameTextSprite->SetVisible(false); } else { // オブジェクトの座標をスクリーン座標に変換 LVector3 pos_2d = Camera::GetMain3DCamera()->WorldToViewportPoint((object_pos + mOffsetPos)); _setPosition(pos_2d); } }
void SimpleScreen::_setGeom(const QRect & geom) { _setPosition(geom.topLeft()); _setSize(geom.size()); }