카메라 기능 개발
This commit is contained in:
@@ -26,18 +26,18 @@ MonoBehaviour:
|
||||
_elevationRotateLimit: 0
|
||||
_isFirstPersonView: 0
|
||||
originElevation: 28.5
|
||||
currentElevation: 90
|
||||
currentElevation: 28.5
|
||||
elevationSensivity: 15
|
||||
minElevation: 5
|
||||
maxElevation: 90
|
||||
originAzimuth: 133
|
||||
currentAzimuth: 89.75
|
||||
currentAzimuth: 133
|
||||
azimuthSensivity: 15
|
||||
maxDistance: 150
|
||||
minDistance: 5
|
||||
moveClamper: 0.033333335
|
||||
moveClamper: 1
|
||||
originDistance: 120
|
||||
originTargetPos: {x: -37.685005, y: 27, z: 29.893412}
|
||||
originTargetRot: {x: -0, y: 0, z: 0}
|
||||
currentDistance: 115.012886
|
||||
currentDistance: 150
|
||||
target: {fileID: 0}
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
namespace WI
|
||||
{
|
||||
[System.Serializable]
|
||||
public class CameraEntity
|
||||
{
|
||||
public float x;
|
||||
public float y;
|
||||
public float z;
|
||||
public float distance;
|
||||
public float elevation;
|
||||
public float azimuth;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: db7ea094b0ebba741893718f5fbfcbaa
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,5 +1,6 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using UnityEngine.EventSystems;
|
||||
|
||||
@@ -9,6 +10,8 @@ namespace WI
|
||||
public class OrbitalController : GenericController, ISingle, IOptionable
|
||||
{
|
||||
public new OrbitalControllerOption option => base.option as OrbitalControllerOption;
|
||||
public SDictionary<ViewMode, CameraEntity> saveTargetPositions = new SDictionary<ViewMode, CameraEntity>();
|
||||
|
||||
public Action<int> ZoomInOutEvent;
|
||||
public int maxValue;
|
||||
public float duration_MoveToCamera;
|
||||
@@ -59,6 +62,12 @@ namespace WI
|
||||
base.AfterAwake();
|
||||
|
||||
targetColliderRadius = option.target.GetComponent<SphereCollider>().radius;
|
||||
|
||||
foreach(ViewMode mode in Enum.GetValues(typeof(ViewMode)))
|
||||
{
|
||||
saveTargetPositions.Add(mode, null);
|
||||
}
|
||||
SetViewMode(ViewMode.PerspectiveView);
|
||||
}
|
||||
|
||||
public override void AfterStart()
|
||||
@@ -379,28 +388,55 @@ namespace WI
|
||||
}
|
||||
public void CameraTopView()
|
||||
{
|
||||
var saveData = saveTargetPositions[ViewMode.TopView];
|
||||
option.maxDistance = 35f;
|
||||
option.currentElevation = 90f;
|
||||
option.currentDistance = 35f;
|
||||
option.currentAzimuth = 0f;
|
||||
|
||||
if (saveData == null)
|
||||
{
|
||||
option.currentElevation = 90f;
|
||||
option.currentDistance = 35f;
|
||||
option.currentAzimuth = 0f;
|
||||
}
|
||||
else
|
||||
{
|
||||
SetCameraData(viewMode);
|
||||
}
|
||||
|
||||
LastPositioning(true);
|
||||
}
|
||||
public void CameraFirstPersonView()
|
||||
{
|
||||
camera.transform.position = option.target.position;
|
||||
option.currentDistance = 5f;
|
||||
option.currentElevation = 0f;
|
||||
option.currentAzimuth = 0f;
|
||||
var saveData = saveTargetPositions[ViewMode.FirstPersonView];
|
||||
|
||||
if (saveData == null)
|
||||
{
|
||||
camera.transform.position = option.target.position;
|
||||
option.currentDistance = 5f;
|
||||
option.currentElevation = 0f;
|
||||
option.currentAzimuth = 0f;
|
||||
}
|
||||
else
|
||||
{
|
||||
SetCameraData(viewMode);
|
||||
}
|
||||
|
||||
LastPositioning(true);
|
||||
}
|
||||
public void CameraPerspectiveView()
|
||||
{
|
||||
var saveData = saveTargetPositions[ViewMode.PerspectiveView];
|
||||
option.maxDistance = 150f;
|
||||
option.currentDistance = option.originDistance;
|
||||
option.currentAzimuth = option.originAzimuth;
|
||||
option.currentElevation = option.originElevation;
|
||||
|
||||
if (saveData == null)
|
||||
{
|
||||
option.currentDistance = option.originDistance;
|
||||
option.currentAzimuth = option.originAzimuth;
|
||||
option.currentElevation = option.originElevation;
|
||||
}
|
||||
else
|
||||
{
|
||||
SetCameraData(viewMode);
|
||||
}
|
||||
|
||||
LastPositioning(true);
|
||||
}
|
||||
@@ -438,5 +474,27 @@ namespace WI
|
||||
onFirstPersonViewRay?.Invoke(hit);
|
||||
}
|
||||
}
|
||||
public void SaveTargetPosition()
|
||||
{
|
||||
var cameraEntity = new CameraEntity();
|
||||
cameraEntity.x = option.target.position.x;
|
||||
cameraEntity.y = option.target.position.y;
|
||||
cameraEntity.z = option.target.position.z;
|
||||
cameraEntity.distance = option.currentDistance;
|
||||
cameraEntity.azimuth = option.currentAzimuth;
|
||||
cameraEntity.elevation = option.currentElevation;
|
||||
|
||||
saveTargetPositions[viewMode] = cameraEntity;
|
||||
}
|
||||
private void SetCameraData(ViewMode currentViewMode)
|
||||
{
|
||||
var cameraData = saveTargetPositions[currentViewMode];
|
||||
|
||||
nextPosition = new Vector3(cameraData.x, cameraData.y, cameraData.z);
|
||||
Debug.Log(nextPosition);
|
||||
option.currentDistance = cameraData.distance;
|
||||
option.currentAzimuth = cameraData.azimuth;
|
||||
option.currentElevation = cameraData.elevation;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user