void OnCaptured(CaptureCamera captureCamera) { RawImage.enabled = true; RawImage.texture = captureCamera.CaptureImage; LetterBoxCamera letterBoxCamera = captureCamera.GetComponent <LetterBoxCamera>(); if (letterBoxCamera != null) { RawImage.rectTransform.SetSize(letterBoxCamera.CurrentSize); //ズームが1ではなく、このイメージを描画するカメラのキャプチャ画像かどうか if (letterBoxCamera.Zoom2D != 1) { int layerMask = 1 << this.gameObject.layer; if ((letterBoxCamera.CachedCamera.cullingMask & layerMask) != 0) { Vector2 pivot = letterBoxCamera.Zoom2DCenter; pivot.x /= letterBoxCamera.CurrentSize.x; pivot.y /= letterBoxCamera.CurrentSize.y; pivot = -pivot + Vector2.one * 0.5f; RawImage.rectTransform.pivot = pivot; RawImage.rectTransform.localScale = Vector3.one / letterBoxCamera.Zoom2D; } } } else { RawImage.rectTransform.SetSize(Screen.width, Screen.height); } //カメラのキャプチャコンポーネントを無効にする captureCamera.OnCaptured.RemoveListener(OnCaptured); captureCamera.enabled = false; }
//エフェクト開始時のコールバック protected override void OnStartEffect(GameObject target, AdvEngine engine, AdvScenarioThread thread) { if (target != null) { LetterBoxCamera camera = target.GetComponentInChildren <LetterBoxCamera>(); //現在の倍率 float zoom0 = camera.Zoom2D; //目標の倍率 float zoomTo = isEmptyZoom ? zoom0 : zoom; //現在の中心点、今の倍率が1の場合は目標の中心点と同じで扱う(無駄な補間を入れないため) Vector2 center0 = (zoom0 == 1) ? zoomCenter : camera.Zoom2DCenter; //目標の中心点 Vector2 centerTo = isEmptyZoomCenter ? center0 : zoomCenter; Timer = target.AddComponent <Timer>(); Timer.AutoDestroy = true; Timer.StartTimer( engine.Page.ToSkippedTime(this.time), engine.Time.Unscaled, (x) => { float zoom1 = Timer.GetCurve(zoom0, zoomTo); Vector2 center1 = Timer.GetCurve(center0, centerTo); camera.SetZoom2D(zoom1, center1); }, (x) => { //倍率1倍なら一応中心点を戻しておく if (zoomTo == 1) { camera.Zoom2DCenter = Vector2.zero; } OnComplete(thread); } ); } else { //記述ミス、タゲーットが見つからない Debug.LogError(LanguageAdvErrorMsg.LocalizeTextFormat(AdvErrorMsg.NotFoundTweenGameObject, "SpriteCamera")); OnComplete(thread); } }
void OnCaptured(CaptureCamera captureCamera) { RawImage.enabled = true; RawImage.texture = captureCamera.CaptureImage; LetterBoxCamera letterBoxCamera = captureCamera.GetComponent <LetterBoxCamera>(); if (letterBoxCamera != null) { RawImage.rectTransform.SetSize(letterBoxCamera.CurrentSize); } else { RawImage.rectTransform.SetSize(Screen.width, Screen.height); } //カメラのキャプチャコンポーネントを無効にする captureCamera.OnCaptured.RemoveListener(OnCaptured); captureCamera.enabled = false; }
void DrawProperties() { LetterBoxCamera obj = target as LetterBoxCamera; UtageEditorToolKit.PropertyField(serializedObject, "pixelsToUnits", "Pixels To Units"); if (obj.PixelsToUnits < 1) { obj.PixelsToUnits = 1; } //基本画面サイズ UtageEditorToolKit.PropertyField(serializedObject, "width", "Game Screen Width"); if (obj.Width < 1) { obj.Width = 1; } UtageEditorToolKit.PropertyField(serializedObject, "height", "Game Screen Height"); if (obj.Height < 1) { obj.Height = 1; } //基本画面サイズ UtageEditorToolKit.BeginGroup("Flexible", serializedObject, "isFlexible"); if (obj.IsFlexible) { GUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Wide ", GUILayout.Width(50)); UtageEditorToolKit.PropertyField(serializedObject, "maxWidth", "", GUILayout.Width(50)); if (obj.MaxWidth < obj.Width) { obj.MaxWidth = obj.Width; } EditorGUILayout.LabelField(" x " + obj.Height, GUILayout.Width(50)); GUILayout.EndHorizontal(); GUILayout.Space(4f); GUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Nallow ", GUILayout.Width(50)); EditorGUILayout.LabelField("" + obj.Width + " x ", GUILayout.Width(50)); UtageEditorToolKit.PropertyField(serializedObject, "maxHeight", "", GUILayout.Width(50)); if (obj.MaxHeight < obj.Height) { obj.MaxHeight = obj.Height; } GUILayout.EndHorizontal(); } UtageEditorToolKit.EndGroup(); EditorGUILayout.LabelField("Current Size = " + obj.CurrentSize.x + " x " + obj.CurrentSize.y); UtageEditorToolKit.PropertyField(serializedObject, "anchor", "Anchor"); UtageEditorToolKit.PropertyField(serializedObject, "zoom2D", "Zoom 2D"); UtageEditorToolKit.PropertyField(serializedObject, "zoom2DCenter", "Zoom 2D Center"); if (obj.Height < 1) { obj.Height = 1; } }