조이스틱 동작이 자연스럽게 구현하도록 수정 및 에디터 상에서 좌우 입력과 점프 동작 추가 적용함

This commit is contained in:
aube.lee
2025-01-28 18:45:33 +09:00
parent 752d02324a
commit e04ef0c613
11 changed files with 367 additions and 207 deletions

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 8e0dc27a2b893304ca54c494d3f031ba
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,182 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &3727900396484012880
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1540208527192873109}
- component: {fileID: 7924180024803085435}
- component: {fileID: 8127942116504678838}
- component: {fileID: 4492421443313798052}
- component: {fileID: 2615979215924132098}
- component: {fileID: 6673825390847085769}
m_Layer: 0
m_Name: TON.Player
m_TagString: Player
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &1540208527192873109
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3727900396484012880}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: -2.29, y: -1.47, z: 0}
m_LocalScale: {x: 5, y: 5, z: 0}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!212 &7924180024803085435
SpriteRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3727900396484012880}
m_Enabled: 1
m_CastShadows: 0
m_ReceiveShadows: 0
m_DynamicOccludee: 1
m_StaticShadowCaster: 0
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 0
m_RayTraceProcedural: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 1
m_SelectedEditorRenderState: 0
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_Sprite: {fileID: 10913, guid: 0000000000000000f000000000000000, type: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_FlipX: 0
m_FlipY: 0
m_DrawMode: 0
m_Size: {x: 0.2, y: 0.2}
m_AdaptiveModeThreshold: 0.5
m_SpriteTileMode: 0
m_WasSpriteAssigned: 1
m_MaskInteraction: 0
m_SpriteSortPoint: 0
--- !u!70 &8127942116504678838
CapsuleCollider2D:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3727900396484012880}
m_Enabled: 1
m_Density: 1
m_Material: {fileID: 0}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
m_LayerOverridePriority: 0
m_ForceSendLayers:
serializedVersion: 2
m_Bits: 4294967295
m_ForceReceiveLayers:
serializedVersion: 2
m_Bits: 4294967295
m_ContactCaptureLayers:
serializedVersion: 2
m_Bits: 4294967295
m_CallbackLayers:
serializedVersion: 2
m_Bits: 4294967295
m_IsTrigger: 0
m_UsedByEffector: 0
m_UsedByComposite: 0
m_Offset: {x: 0, y: 0}
m_Size: {x: 0.2, y: 0.2}
m_Direction: 0
--- !u!50 &4492421443313798052
Rigidbody2D:
serializedVersion: 4
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3727900396484012880}
m_BodyType: 0
m_Simulated: 1
m_UseFullKinematicContacts: 0
m_UseAutoMass: 0
m_Mass: 1
m_LinearDrag: 0
m_AngularDrag: 0.05
m_GravityScale: 1
m_Material: {fileID: 0}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
m_Interpolate: 0
m_SleepingMode: 1
m_CollisionDetection: 0
m_Constraints: 0
--- !u!114 &2615979215924132098
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3727900396484012880}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: b1e5d5ec74000134290431a712ebd683, type: 3}
m_Name:
m_EditorClassIdentifier:
groundLayer:
serializedVersion: 2
m_Bits: 0
--- !u!114 &6673825390847085769
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3727900396484012880}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 163a5df0eeadca842adba0310b08b93e, type: 3}
m_Name:
m_EditorClassIdentifier:
speed: 3
jumpForce: 10
rb: {fileID: 4492421443313798052}

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: a44eee8bbac0660468d7a047fdcecbb9
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -116,7 +116,9 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 3675204183f70fb48a77841d2b9055f4, type: 3} m_Script: {fileID: 11500000, guid: 3675204183f70fb48a77841d2b9055f4, type: 3}
m_Name: m_Name:
m_EditorClassIdentifier: m_EditorClassIdentifier:
eventSystem: {fileID: 0}
joystick: {fileID: 7288066023221573359} joystick: {fileID: 7288066023221573359}
linkedCharactor: {fileID: 0}
--- !u!1 &2053873117425800803 --- !u!1 &2053873117425800803
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@@ -371,7 +373,19 @@ MonoBehaviour:
m_TargetGraphic: {fileID: 790267721355862019} m_TargetGraphic: {fileID: 790267721355862019}
m_OnClick: m_OnClick:
m_PersistentCalls: m_PersistentCalls:
m_Calls: [] m_Calls:
- m_Target: {fileID: -4577297331876422106}
m_TargetAssemblyTypeName: TON.ControllerUI, Assembly-CSharp
m_MethodName: OnClickAttackButton
m_Mode: 1
m_Arguments:
m_ObjectArgument: {fileID: 0}
m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
m_IntArgument: 0
m_FloatArgument: 0
m_StringArgument:
m_BoolArgument: 0
m_CallState: 2
--- !u!1 &6698720259494018033 --- !u!1 &6698720259494018033
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@@ -492,7 +506,19 @@ MonoBehaviour:
m_TargetGraphic: {fileID: 2198211765074557333} m_TargetGraphic: {fileID: 2198211765074557333}
m_OnClick: m_OnClick:
m_PersistentCalls: m_PersistentCalls:
m_Calls: [] m_Calls:
- m_Target: {fileID: -4577297331876422106}
m_TargetAssemblyTypeName: TON.ControllerUI, Assembly-CSharp
m_MethodName: OnClickJumpButton
m_Mode: 1
m_Arguments:
m_ObjectArgument: {fileID: 0}
m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
m_IntArgument: 0
m_FloatArgument: 0
m_StringArgument:
m_BoolArgument: 0
m_CallState: 2
--- !u!1 &7098794055699103870 --- !u!1 &7098794055699103870
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0

View File

@@ -135,7 +135,7 @@ GameObject:
- component: {fileID: 116971772} - component: {fileID: 116971772}
m_Layer: 0 m_Layer: 0
m_Name: 2D Level m_Name: 2D Level
m_TagString: Untagged m_TagString: Ground
m_Icon: {fileID: 0} m_Icon: {fileID: 0}
m_NavMeshLayer: 0 m_NavMeshLayer: 0
m_StaticEditorFlags: 0 m_StaticEditorFlags: 0
@@ -450,7 +450,7 @@ GameObject:
- component: {fileID: 1268941403} - component: {fileID: 1268941403}
m_Layer: 0 m_Layer: 0
m_Name: 2D Level (1) m_Name: 2D Level (1)
m_TagString: Untagged m_TagString: Ground
m_Icon: {fileID: 0} m_Icon: {fileID: 0}
m_NavMeshLayer: 0 m_NavMeshLayer: 0
m_StaticEditorFlags: 0 m_StaticEditorFlags: 0
@@ -567,186 +567,6 @@ Transform:
m_Children: [] m_Children: []
m_Father: {fileID: 0} m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1631563207
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1631563211}
- component: {fileID: 1631563210}
- component: {fileID: 1631563209}
- component: {fileID: 1631563208}
- component: {fileID: 1631563212}
- component: {fileID: 1631563213}
m_Layer: 0
m_Name: TON.Player
m_TagString: Player
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!50 &1631563208
Rigidbody2D:
serializedVersion: 4
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1631563207}
m_BodyType: 0
m_Simulated: 1
m_UseFullKinematicContacts: 0
m_UseAutoMass: 0
m_Mass: 1
m_LinearDrag: 0
m_AngularDrag: 0.05
m_GravityScale: 1
m_Material: {fileID: 0}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
m_Interpolate: 0
m_SleepingMode: 1
m_CollisionDetection: 0
m_Constraints: 0
--- !u!70 &1631563209
CapsuleCollider2D:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1631563207}
m_Enabled: 1
m_Density: 1
m_Material: {fileID: 0}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
m_LayerOverridePriority: 0
m_ForceSendLayers:
serializedVersion: 2
m_Bits: 4294967295
m_ForceReceiveLayers:
serializedVersion: 2
m_Bits: 4294967295
m_ContactCaptureLayers:
serializedVersion: 2
m_Bits: 4294967295
m_CallbackLayers:
serializedVersion: 2
m_Bits: 4294967295
m_IsTrigger: 0
m_UsedByEffector: 0
m_UsedByComposite: 0
m_Offset: {x: 0, y: 0}
m_Size: {x: 0.2, y: 0.2}
m_Direction: 0
--- !u!212 &1631563210
SpriteRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1631563207}
m_Enabled: 1
m_CastShadows: 0
m_ReceiveShadows: 0
m_DynamicOccludee: 1
m_StaticShadowCaster: 0
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 0
m_RayTraceProcedural: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 1
m_SelectedEditorRenderState: 0
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_Sprite: {fileID: 10913, guid: 0000000000000000f000000000000000, type: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_FlipX: 0
m_FlipY: 0
m_DrawMode: 0
m_Size: {x: 0.2, y: 0.2}
m_AdaptiveModeThreshold: 0.5
m_SpriteTileMode: 0
m_WasSpriteAssigned: 1
m_MaskInteraction: 0
m_SpriteSortPoint: 0
--- !u!4 &1631563211
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1631563207}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: -2.29, y: -1.47, z: 0}
m_LocalScale: {x: 5, y: 5, z: 0}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &1631563212
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1631563207}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: b1e5d5ec74000134290431a712ebd683, type: 3}
m_Name:
m_EditorClassIdentifier:
groundLayer:
serializedVersion: 2
m_Bits: 0
--- !u!114 &1631563213
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1631563207}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 163a5df0eeadca842adba0310b08b93e, type: 3}
m_Name:
m_EditorClassIdentifier:
speed: 10
joystick: {fileID: 0}
rb: {fileID: 1631563208}
--- !u!1 &1795290567 --- !u!1 &1795290567
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@@ -917,6 +737,67 @@ Transform:
m_Children: [] m_Children: []
m_Father: {fileID: 0} m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0}
--- !u!1001 &8468278365748754255
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
serializedVersion: 3
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: 1540208527192873109, guid: a44eee8bbac0660468d7a047fdcecbb9, type: 3}
propertyPath: m_LocalPosition.x
value: -2.29
objectReference: {fileID: 0}
- target: {fileID: 1540208527192873109, guid: a44eee8bbac0660468d7a047fdcecbb9, type: 3}
propertyPath: m_LocalPosition.y
value: -1.47
objectReference: {fileID: 0}
- target: {fileID: 1540208527192873109, guid: a44eee8bbac0660468d7a047fdcecbb9, type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1540208527192873109, guid: a44eee8bbac0660468d7a047fdcecbb9, type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 1540208527192873109, guid: a44eee8bbac0660468d7a047fdcecbb9, type: 3}
propertyPath: m_LocalRotation.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1540208527192873109, guid: a44eee8bbac0660468d7a047fdcecbb9, type: 3}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1540208527192873109, guid: a44eee8bbac0660468d7a047fdcecbb9, type: 3}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1540208527192873109, guid: a44eee8bbac0660468d7a047fdcecbb9, type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1540208527192873109, guid: a44eee8bbac0660468d7a047fdcecbb9, type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1540208527192873109, guid: a44eee8bbac0660468d7a047fdcecbb9, type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3727900396484012880, guid: a44eee8bbac0660468d7a047fdcecbb9, type: 3}
propertyPath: m_Name
value: TON.Player
objectReference: {fileID: 0}
- target: {fileID: 6673825390847085769, guid: a44eee8bbac0660468d7a047fdcecbb9, type: 3}
propertyPath: jumpForce
value: 5
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: a44eee8bbac0660468d7a047fdcecbb9, type: 3}
--- !u!1660057539 &9223372036854775807 --- !u!1660057539 &9223372036854775807
SceneRoots: SceneRoots:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@@ -929,4 +810,4 @@ SceneRoots:
- {fileID: 116971771} - {fileID: 116971771}
- {fileID: 1268941405} - {fileID: 1268941405}
- {fileID: 1128113573} - {fileID: 1128113573}
- {fileID: 1631563211} - {fileID: 8468278365748754255}

View File

@@ -6,39 +6,72 @@ namespace TON
{ {
public class CharacterBase : MonoBehaviour public class CharacterBase : MonoBehaviour
{ {
public float speed; public float speed;
public VariableJoystick joystick; public float jumpForce = 10f; // 점프 힘
private bool isGrounded = true; // 플레이어가 바닥에 있는지 여부를 판단
private VariableJoystick joystick;
public Rigidbody2D rb; public Rigidbody2D rb;
public void Start() public void Start()
{ {
joystick = ControllerUI.Instance.joystick; joystick = ControllerUI.Instance.joystick;
ControllerUI.Instance.linkedCharactor = this;
} }
public void FixedUpdate() public void FixedUpdate()
{ {
if (joystick != null) // 키보드 입력과 조이스틱 입력 통합
float horizontalInput = Input.GetAxis("Horizontal"); // 키보드 좌우 입력
if (joystick != null && Mathf.Abs(joystick.Horizontal) > 0.01f)
{ {
Debug.Log($"Horizontal Input: {joystick.input.x}, {joystick.input.y}"); horizontalInput = joystick.Horizontal; // 조이스틱 입력 우선
Debug.Log($"Horizontal Horizontal: {joystick.Horizontal}"); }
Debug.Log($"Horizontal Direction: {joystick.Direction}");
// 조이스틱의 Horizontal 값 가져오기 // 좌우 이동 처리 (X축 속도 설정)
float horizontalInput = joystick.Horizontal; float newVelocityX = horizontalInput * speed;
// 입력값이 0이 아닐 때만 처리 // Rigidbody2D의 속도 업데이트 (X축은 입력값 기반, Y축은 중력/점프 유지)
if (Mathf.Abs(horizontalInput) > 0.0f) rb.velocity = new Vector2(newVelocityX, rb.velocity.y);
// 디버그용 출력
// Debug.Log($"Horizontal Input: {horizontalInput}, Velocity: {rb.velocity}");
}
public void Jump()
{ {
// 현재 위치 가져오기 // 바닥에 있을 때만 점프 가능
Vector2 currentPosition = rb.position; if (isGrounded)
{
Debug.Log("Character Jump");
// 새로운 X 위치 계산 // 점프: 기존 X축 속도 유지, Y축 속도를 점프 힘으로 설정
float newXPosition = currentPosition.x + horizontalInput * speed * Time.fixedDeltaTime; rb.velocity = new Vector2(rb.velocity.x, jumpForce);
// Rigidbody2D의 위치 업데이트 // 점프 상태로 설정
rb.MovePosition(new Vector2(newXPosition, currentPosition.y)); isGrounded = false;
} }
} }
// 바닥 충돌 감지 (2D Physics)
private void OnCollisionEnter2D(Collision2D collision)
{
// Ground 태그가 붙은 오브젝트와 충돌 시 바닥 상태로 전환
if (collision.gameObject.CompareTag("Ground"))
{
isGrounded = true;
} }
}
public void Attack()
{
Debug.Log("character Attack");
}
} }
} }

View File

@@ -6,9 +6,16 @@ namespace TON
{ {
public class UIBase : MonoBehaviour public class UIBase : MonoBehaviour
{ {
public Object eventSystem;
public virtual void Show() public virtual void Show()
{ {
Instantiate(Resources.Load("EventSystem/Prefabs/TON.EventSystem")); // eventSystem이 현재 씬에 존재하지 않는 경우
if (eventSystem == null)
{
// UI EventSystem 정상 동작 되도록 GameObject Load
eventSystem = Instantiate(Resources.Load("EventSystem/Prefabs/TON.EventSystem"));
}
gameObject.SetActive(true); gameObject.SetActive(true);
} }

View File

@@ -5,6 +5,10 @@ using UnityEngine.EventSystems;
namespace TON namespace TON
{ {
/// <summary>
/// Joystick Assets에서 가져온 조이스틱 기본 동작 스크립트
/// </summary>
public class Joystick : MonoBehaviour, IPointerDownHandler, IDragHandler, IPointerUpHandler public class Joystick : MonoBehaviour, IPointerDownHandler, IDragHandler, IPointerUpHandler
{ {
public float Horizontal { get { return (snapX) ? SnapFloat(input.x, AxisOptions.Horizontal) : input.x; } } public float Horizontal { get { return (snapX) ? SnapFloat(input.x, AxisOptions.Horizontal) : input.x; } }

View File

@@ -5,6 +5,9 @@ using UnityEngine.EventSystems;
namespace TON namespace TON
{ {
/// <summary>
/// Joystick Assets에서 가져온 조이스틱 초기화 스크립트
/// </summary>
public class VariableJoystick : Joystick public class VariableJoystick : Joystick
{ {
public float MoveThreshold { get { return moveThreshold; } set { moveThreshold = Mathf.Abs(value); } } public float MoveThreshold { get { return moveThreshold; } set { moveThreshold = Mathf.Abs(value); } }

View File

@@ -9,10 +9,19 @@ namespace TON
{ {
public static ControllerUI Instance => UIManager.Singleton.GetUI<ControllerUI>(UIList.ControllerUI); public static ControllerUI Instance => UIManager.Singleton.GetUI<ControllerUI>(UIList.ControllerUI);
/// <summary> 조이스틱에서 컨트롤된 x 값을 Player에서 사용할 수 있도록 객체화 </summary>
public VariableJoystick joystick; public VariableJoystick joystick;
private void Start() public CharacterBase linkedCharactor { get; set; }
{
public void OnClickJumpButton()
{
linkedCharactor.Jump();
}
public void OnClickAttackButton()
{
linkedCharactor.Attack();
} }
} }
} }