Commit 255c8a17 authored by 18손재민's avatar 18손재민

플레이어 발사 모드 시 시점 전환 구현

parent b9146741
fileFormatVersion: 2
guid: 4ea1f6c8373c4484faa04e687403d543
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
...@@ -10,6 +10,9 @@ public class CameraController : MonoBehaviour ...@@ -10,6 +10,9 @@ public class CameraController : MonoBehaviour
Vector3 previousAngle; Vector3 previousAngle;
float shootingFov = 60f; float shootingFov = 60f;
float mapFov = 40f; float mapFov = 40f;
float rotationX = 0;
float rotationY = 0;
float sensitivity = 30;
Vector3 centerPos = new Vector3(0, 0, 0); Vector3 centerPos = new Vector3(0, 0, 0);
/// <summary> /// <summary>
...@@ -54,18 +57,25 @@ public class CameraController : MonoBehaviour ...@@ -54,18 +57,25 @@ public class CameraController : MonoBehaviour
{ {
float startTime = Time.time; float startTime = Time.time;
Vector3 posDiff = (player.head.transform.position - transform.position) / 40; Vector3 posDiff = (player.head.transform.position - transform.position) / 40;
Vector3 angleDiff = (player.head.transform.eulerAngles - transform.eulerAngles) / 40;
float fovDiff = (shootingFov - mapFov) / 40f; float fovDiff = (shootingFov - mapFov) / 40f;
float angleDiff = -30f / 40f;
PlayerController.inst.isZooming = true;
previousPos = transform.position; previousPos = transform.position;
previousAngle = transform.eulerAngles; previousAngle = new Vector3(transform.eulerAngles.x > 180 ? transform.eulerAngles.x - 360 : transform.eulerAngles.x,
transform.eulerAngles.y > 180 ? transform.eulerAngles.y - 360 : transform.eulerAngles.y,
transform.eulerAngles.z > 180 ? transform.eulerAngles.z - 360 : transform.eulerAngles.z);
for (int i = 0; i < 40; i++) for (int i = 0; i < 40; i++)
{ {
yield return null; yield return null;
transform.position += posDiff; transform.position += posDiff;
transform.eulerAngles += angleDiff; transform.eulerAngles += new Vector3(angleDiff, 0, 0);
Camera.main.fieldOfView += fovDiff; Camera.main.fieldOfView += fovDiff;
} }
player.transform.eulerAngles = new Vector3(player.transform.eulerAngles.x, transform.eulerAngles.y, player.transform.eulerAngles.z);
transform.position = player.head.transform.position; transform.position = player.head.transform.position;
rotationX = transform.eulerAngles.y;
rotationY = transform.eulerAngles.x;
PlayerController.inst.isZooming = false;
} }
/// <summary> /// <summary>
/// Zoom out from player. /// Zoom out from player.
...@@ -75,8 +85,19 @@ public class CameraController : MonoBehaviour ...@@ -75,8 +85,19 @@ public class CameraController : MonoBehaviour
{ {
float startTime = Time.time; float startTime = Time.time;
Vector3 posDiff = (previousPos - transform.position) / 40; Vector3 posDiff = (previousPos - transform.position) / 40;
Vector3 angleDiff = (previousAngle - transform.eulerAngles) / 40;
float fovDiff = (mapFov - shootingFov) / 40f; float fovDiff = (mapFov - shootingFov) / 40f;
PlayerController.inst.isZooming = true;
Vector3 tempAngle = new Vector3(transform.eulerAngles.x > 180 ? transform.eulerAngles.x - 360 : transform.eulerAngles.x,
transform.eulerAngles.y > 180 ? transform.eulerAngles.y - 360 : transform.eulerAngles.y,
transform.eulerAngles.z > 180 ? transform.eulerAngles.z - 360 : transform.eulerAngles.z);
Vector3 angleDiff = (previousAngle - tempAngle) / 40;
angleDiff = new Vector3(angleDiff.x > 180 ? 360 - angleDiff.x : angleDiff.x,
angleDiff.y > 180 ? 360 - angleDiff.y : angleDiff.y,
angleDiff.z > 180 ? 360 - angleDiff.z : angleDiff.z);
Debug.Log(previousAngle + "previousAngle");
Debug.Log(tempAngle + "tempAngle");
Debug.Log(angleDiff + "angleDiff");
for (int i = 0; i < 40; i++) for (int i = 0; i < 40; i++)
{ {
yield return null; yield return null;
...@@ -86,6 +107,7 @@ public class CameraController : MonoBehaviour ...@@ -86,6 +107,7 @@ public class CameraController : MonoBehaviour
} }
transform.position = previousPos; transform.position = previousPos;
PlayerController.inst.isPlayerShooting = false; PlayerController.inst.isPlayerShooting = false;
PlayerController.inst.isZooming = false;
} }
// Start is called before the first frame update // Start is called before the first frame update
...@@ -95,16 +117,26 @@ public class CameraController : MonoBehaviour ...@@ -95,16 +117,26 @@ public class CameraController : MonoBehaviour
transform.eulerAngles = new Vector3(30, transform.eulerAngles.y, transform.eulerAngles.z); transform.eulerAngles = new Vector3(30, transform.eulerAngles.y, transform.eulerAngles.z);
} }
// Update is called once per frame // Update is called once per frame
void Update() void Update()
{
if (!PlayerController.inst.isZooming)
{ {
if (!PlayerController.inst.isPlayerShooting) if (!PlayerController.inst.isPlayerShooting)
{ {
//CameraMove(); //CameraMove();
CameraDrag(); CameraDrag();
} }
else
{
float mouseMoveValueX = Input.GetAxis("Mouse X");
float mouseMoveValueY = Input.GetAxis("Mouse Y");
rotationX += mouseMoveValueX * sensitivity * Time.deltaTime;
rotationY += mouseMoveValueY * sensitivity * Time.deltaTime;
rotationY = Mathf.Clamp(rotationY, -50, 20);
transform.eulerAngles = new Vector3(-rotationY, rotationX, 0);
}
}
} }
} }
...@@ -9,6 +9,7 @@ public class PlayerController : SingletonBehaviour<PlayerController> ...@@ -9,6 +9,7 @@ public class PlayerController : SingletonBehaviour<PlayerController>
public Player currentPlayer; public Player currentPlayer;
public bool isPlayerMoving; public bool isPlayerMoving;
public bool isPlayerShooting; public bool isPlayerShooting;
public bool isZooming;
private Vector2Int prePos; private Vector2Int prePos;
public Vector2Int MapPos public Vector2Int MapPos
{ {
...@@ -39,6 +40,8 @@ public class PlayerController : SingletonBehaviour<PlayerController> ...@@ -39,6 +40,8 @@ public class PlayerController : SingletonBehaviour<PlayerController>
prePos = MapPos; prePos = MapPos;
} }
if (!isZooming)
{
if (Input.GetMouseButtonDown(0) && !isPlayerMoving && !isPlayerShooting) if (Input.GetMouseButtonDown(0) && !isPlayerMoving && !isPlayerShooting)
{ {
Ray mouseRay = Camera.main.ScreenPointToRay(Input.mousePosition); Ray mouseRay = Camera.main.ScreenPointToRay(Input.mousePosition);
...@@ -69,4 +72,5 @@ public class PlayerController : SingletonBehaviour<PlayerController> ...@@ -69,4 +72,5 @@ public class PlayerController : SingletonBehaviour<PlayerController>
StartCoroutine(Camera.main.GetComponent<CameraController>().ZoomOutFromPlayer()); StartCoroutine(Camera.main.GetComponent<CameraController>().ZoomOutFromPlayer());
} }
} }
}
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment