Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
man-in-the-mirror
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
4
Issues
4
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
MIM
man-in-the-mirror
Commits
255c8a17
Commit
255c8a17
authored
May 20, 2019
by
18손재민
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
플레이어 발사 모드 시 시점 전환 구현
parent
b9146741
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
72 additions
and
44 deletions
+72
-44
WIP.meta
Assets/Prefabs/WIP.meta
+0
-8
CameraController.cs
Assets/Scripts/CameraController.cs
+41
-9
PlayerController.cs
Assets/Scripts/PlayerController.cs
+31
-27
No files found.
Assets/Prefabs/WIP.meta
deleted
100644 → 0
View file @
b9146741
fileFormatVersion: 2
guid: 4ea1f6c8373c4484faa04e687403d543
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
Assets/Scripts/CameraController.cs
View file @
255c8a17
...
...
@@ -10,6 +10,9 @@ public class CameraController : MonoBehaviour
Vector3
previousAngle
;
float
shootingFov
=
60f
;
float
mapFov
=
40f
;
float
rotationX
=
0
;
float
rotationY
=
0
;
float
sensitivity
=
30
;
Vector3
centerPos
=
new
Vector3
(
0
,
0
,
0
);
/// <summary>
...
...
@@ -54,18 +57,25 @@ public class CameraController : MonoBehaviour
{
float
startTime
=
Time
.
time
;
Vector3
posDiff
=
(
player
.
head
.
transform
.
position
-
transform
.
position
)
/
40
;
Vector3
angleDiff
=
(
player
.
head
.
transform
.
eulerAngles
-
transform
.
eulerAngles
)
/
40
;
float
fovDiff
=
(
shootingFov
-
mapFov
)
/
40f
;
float
angleDiff
=
-
30f
/
40f
;
PlayerController
.
inst
.
isZooming
=
true
;
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
++)
{
yield
return
null
;
transform
.
position
+=
posDiff
;
transform
.
eulerAngles
+=
angleDiff
;
transform
.
eulerAngles
+=
new
Vector3
(
angleDiff
,
0
,
0
)
;
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
;
rotationX
=
transform
.
eulerAngles
.
y
;
rotationY
=
transform
.
eulerAngles
.
x
;
PlayerController
.
inst
.
isZooming
=
false
;
}
/// <summary>
/// Zoom out from player.
...
...
@@ -75,8 +85,19 @@ public class CameraController : MonoBehaviour
{
float
startTime
=
Time
.
time
;
Vector3
posDiff
=
(
previousPos
-
transform
.
position
)
/
40
;
Vector3
angleDiff
=
(
previousAngle
-
transform
.
eulerAngles
)
/
40
;
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
++)
{
yield
return
null
;
...
...
@@ -86,6 +107,7 @@ public class CameraController : MonoBehaviour
}
transform
.
position
=
previousPos
;
PlayerController
.
inst
.
isPlayerShooting
=
false
;
PlayerController
.
inst
.
isZooming
=
false
;
}
// Start is called before the first frame update
...
...
@@ -95,15 +117,25 @@ public class CameraController : MonoBehaviour
transform
.
eulerAngles
=
new
Vector3
(
30
,
transform
.
eulerAngles
.
y
,
transform
.
eulerAngles
.
z
);
}
// Update is called once per frame
void
Update
()
{
if
(!
PlayerController
.
inst
.
is
PlayerShoot
ing
)
if
(!
PlayerController
.
inst
.
is
Zoom
ing
)
{
//CameraMove();
CameraDrag
();
if
(!
PlayerController
.
inst
.
isPlayerShooting
)
{
//CameraMove();
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
);
}
}
}
...
...
Assets/Scripts/PlayerController.cs
View file @
255c8a17
...
...
@@ -9,6 +9,7 @@ public class PlayerController : SingletonBehaviour<PlayerController>
public
Player
currentPlayer
;
public
bool
isPlayerMoving
;
public
bool
isPlayerShooting
;
public
bool
isZooming
;
private
Vector2Int
prePos
;
public
Vector2Int
MapPos
{
...
...
@@ -39,34 +40,37 @@ public class PlayerController : SingletonBehaviour<PlayerController>
prePos
=
MapPos
;
}
if
(
Input
.
GetMouseButtonDown
(
0
)
&&
!
isPlayerMoving
&&
!
isPlayerShooting
)
{
Ray
mouseRay
=
Camera
.
main
.
ScreenPointToRay
(
Input
.
mousePosition
);
RaycastHit
hit
;
if
(
Physics
.
Raycast
(
mouseRay
,
out
hit
)
&&
hit
.
collider
.
gameObject
.
tag
.
Equals
(
"Player"
))
{
if
(
currentPlayer
!=
null
)
currentPlayer
.
ResetCurrentPlayer
();
currentPlayer
=
hit
.
transform
.
gameObject
.
GetComponent
<
Player
>();
StartCoroutine
(
currentPlayer
.
SetCurrentPlayer
());
StartCoroutine
(
currentPlayer
.
CountPlayerClick
(
Time
.
time
));
Debug
.
Log
(
hit
.
collider
.
gameObject
.
tag
);
}
else
if
(
Physics
.
Raycast
(
mouseRay
,
out
hit
)
&&
hit
.
collider
.
gameObject
.
tag
.
Equals
(
"floor"
))
{
if
(
currentPlayer
!=
null
)
currentPlayer
.
MovePlayer
(
hit
.
collider
.
gameObject
.
transform
.
position
);
Debug
.
Log
(
hit
.
collider
.
gameObject
.
tag
);
}
else
if
(
hit
.
collider
==
null
)
{
if
(
currentPlayer
!=
null
)
currentPlayer
.
ResetCurrentPlayer
();
}
}
else
if
(
Input
.
GetMouseButtonDown
(
1
)
&&
isPlayerShooting
)
if
(!
isZooming
)
{
StartCoroutine
(
Camera
.
main
.
GetComponent
<
CameraController
>().
ZoomOutFromPlayer
());
if
(
Input
.
GetMouseButtonDown
(
0
)
&&
!
isPlayerMoving
&&
!
isPlayerShooting
)
{
Ray
mouseRay
=
Camera
.
main
.
ScreenPointToRay
(
Input
.
mousePosition
);
RaycastHit
hit
;
if
(
Physics
.
Raycast
(
mouseRay
,
out
hit
)
&&
hit
.
collider
.
gameObject
.
tag
.
Equals
(
"Player"
))
{
if
(
currentPlayer
!=
null
)
currentPlayer
.
ResetCurrentPlayer
();
currentPlayer
=
hit
.
transform
.
gameObject
.
GetComponent
<
Player
>();
StartCoroutine
(
currentPlayer
.
SetCurrentPlayer
());
StartCoroutine
(
currentPlayer
.
CountPlayerClick
(
Time
.
time
));
Debug
.
Log
(
hit
.
collider
.
gameObject
.
tag
);
}
else
if
(
Physics
.
Raycast
(
mouseRay
,
out
hit
)
&&
hit
.
collider
.
gameObject
.
tag
.
Equals
(
"floor"
))
{
if
(
currentPlayer
!=
null
)
currentPlayer
.
MovePlayer
(
hit
.
collider
.
gameObject
.
transform
.
position
);
Debug
.
Log
(
hit
.
collider
.
gameObject
.
tag
);
}
else
if
(
hit
.
collider
==
null
)
{
if
(
currentPlayer
!=
null
)
currentPlayer
.
ResetCurrentPlayer
();
}
}
else
if
(
Input
.
GetMouseButtonDown
(
1
)
&&
isPlayerShooting
)
{
StartCoroutine
(
Camera
.
main
.
GetComponent
<
CameraController
>().
ZoomOutFromPlayer
());
}
}
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment