void RenderObject() { UpdateObject(); if (FakeObject == null) { return; } Renderer render = FakeObject.getGameObject().renderer == null ? mRender : FakeObject.getGameObject().renderer; //设置当前renderer add by ss if (FakeObject == null || FakeObject.getGameObject() == null || render == null || mFakeCameraObj == null) { return; } Quaternion curRot = FakeObject.getGameObject().transform.localRotation; FakeObject.getGameObject().transform.localRotation = Quaternion.identity; mFakeCameraObj.SetActiveRecursively(true); //打开摄像机 float objectHeight = render.bounds.size.y; //fake object 高度 //modified by ss GFX.GfxUtility.setGameObjectLayer(FakeObject.getGameObject(), LayerManager.FakeObjectLayer); FakeObject.SetVisible(true);//设置对象可见 Vector3 fakeObjCenter = mFakeObjectPos; float dis = ctanFOV * objectHeight * 0.5f + render.bounds.size.z * 0.5f + 0.6f; fakeObjCenter.y += render.bounds.size.y * 0.5f; Vector3 camePos = fakeObjCenter - mFakeCameraObj.transform.forward * dis;//-mFakeCameraObj.transform.forward * dis + fakeObjCenter;//求摄像机位置 mFakeCameraObj.transform.position = camePos; mFakeCameraObj.camera.targetTexture = mFakeRenderTexture; FakeObject.getGameObject().transform.localRotation = curRot; //恢复朝向 mFakeCameraObj.camera.Render(); //把render texture 赋予材质 if (renderer.material != null) { renderer.material.mainTexture = mFakeRenderTexture; } FakeObject.SetVisible(false); //不可见 mFakeCameraObj.SetActiveRecursively(false); //关闭摄像机 }
void UpdateObject() { if (gameObject.name == "RoleTipShowPlayer")//是角色面板 { if (CObjectManager.Instance.getPlayerMySelf().getAvatar() != null && CObjectManager.Instance.getPlayerMySelf().getAvatar().GetRenderInterface() != null) { FakeObject = CObjectManager.Instance.getPlayerMySelf().getAvatar().GetRenderInterface(); FakeObject.GetLocator("FootEffectLocator", ref mFakeObjectPos); } } else if (gameObject.name == "PetModelShow") { if (mSelfEquipt == null) { GameObject roleTipWindow = UIWindowMng.Instance.GetWindowGo("RoleTipWindow"); mSelfEquipt = roleTipWindow.GetComponent <UISelfEquip>(); } SDATA_PET pet = CDataPool.Instance.Pet_GetValidPet(mSelfEquipt.ActivePet);//CDataPool.Instance.Pet_GetPet(mSelfEquipt.ActivePet); if (pet != null && pet.FakeObject != null) { //由于宠物的skinmeshrenderer是在主gameobject下面,所以需要取子节点的meshrender add by ss FakeObject = pet.FakeObject.GetRenderInterface(); SkinnedMeshRenderer render = FakeObject.getGameObject().GetComponentInChildren <SkinnedMeshRenderer>(); if (mRender != render) { mRender = render; FakeObject.GetLocator("FootEffectLocator", ref mFakeObjectPos); } } } // else if ()//其他fake window // { // } // }