[Feat] 일상생활 튜토리얼 아주 일부

This commit is contained in:
HaeinLEE 2025-04-30 23:17:07 +09:00
parent 8edeab89c4
commit 39a726b172
41 changed files with 608 additions and 13 deletions

BIN
Assets/LIN/Housing Copy.unity (Stored with Git LFS)

Binary file not shown.

View File

@ -19,6 +19,10 @@ public class InteractionController : MonoBehaviour
private void Start()
{
playerStats.OnWorked += SuddenAfterWorkEventHappen;
if (housingCanvasController == null)
{
housingCanvasController = FindObjectOfType<HousingCanvasController>();
}
}
// 상호작용 가능한 사물 범위에 들어올 때

View File

@ -12,14 +12,42 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: b22d834cf5e26e647be215074940d40e, type: 3}
m_Name: FirstTutorialStep
m_EditorClassIdentifier:
message:
message: "\uD29C\uD1A0\uB9AC\uC5BC\uC744 \uC2DC\uC791\uD569\uB2C8\uB2E4.\n2\uCD08
\uB4A4 \uC790\uB3D9\uC73C\uB85C \uC0AC\uB77C\uC9C0\uB294 \uBA54\uC138\uC9C0\uC785\uB2C8\uB2E4."
onBegin:
m_PersistentCalls:
m_Calls: []
m_Calls:
- m_Target: {fileID: -3457973789329276246, guid: 7d3bc5ecd8c87f64f8a9e137674ee021,
type: 3}
m_TargetAssemblyTypeName: TutorialPlayerController, Assembly-CSharp
m_MethodName: Show
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
onComplete:
m_PersistentCalls:
m_Calls: []
timeout: 0
m_Calls:
- m_Target: {fileID: -3457973789329276246, guid: 7d3bc5ecd8c87f64f8a9e137674ee021,
type: 3}
m_TargetAssemblyTypeName: TutorialPlayerController, Assembly-CSharp
m_MethodName: Hide
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
timeout: 2
requiredKey: 0
touchTargetIndex: 0
nextStep: {fileID: 0}
touchTargetIndex: -1
deactiveObjectIndex: -1
nextStep: {fileID: 11400000, guid: a6f10decfc8504843b358ab8893c01f7, type: 2}

BIN
Assets/LIN/Scripts/Tutorial/Foward Fixed Joystick.prefab (Stored with Git LFS) Normal file

Binary file not shown.

View File

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

View File

@ -0,0 +1,25 @@
using System.Collections;
using System.Collections.Generic;
using Unity.VisualScripting;
using UnityEngine;
using UnityEngine.Serialization;
public class FowardFixedJoystickController : MonoBehaviour
{
public GameObject forwardJoystick;
private GameObject joystickObject;
public void Show()
{
var parentObject = FindObjectOfType(typeof(Canvas));
joystickObject = Instantiate(forwardJoystick,parentObject.GameObject().transform);
forwardJoystick.SetActive(true);
}
public void Hide()
{
Destroy(joystickObject);
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 690c0dc2b46618b498a915f63c0a2c6c
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

BIN
Assets/LIN/Scripts/Tutorial/Interaction Button.prefab (Stored with Git LFS) Normal file

Binary file not shown.

View File

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

View File

@ -0,0 +1,21 @@
using System.Collections;
using System.Collections.Generic;
using Unity.VisualScripting;
using UnityEngine;
public class JpystickTutorial : MonoBehaviour
{
public GameObject joystickObject;
public void Show()
{
var parentObject = FindObjectOfType(typeof(Canvas));
Instantiate(joystickObject,parentObject.GameObject().transform);
joystickObject.SetActive(true);
}
public void Hide()
{
joystickObject.SetActive(false);
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 29d83b85fb75a0042ae52dd8d5dbf036
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,79 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: b22d834cf5e26e647be215074940d40e, type: 3}
m_Name: LastTutorialStep
m_EditorClassIdentifier:
message: "\uC9C0\uAE08 \uD654\uBA74\uC740 \uC544\uBB34\uB370\uB098 \uD074\uB9AD\uD558\uBA74
\uC5C6\uC5B4\uC9D1\uB2C8\uB2E4."
onBegin:
m_PersistentCalls:
m_Calls:
- m_Target: {fileID: 7187599994600413992, guid: 4d761fd80ffc7504cbfe46a9d52a46ef,
type: 3}
m_TargetAssemblyTypeName: JpystickTutorial, Assembly-CSharp
m_MethodName: Show
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
- m_Target: {fileID: 3325711598849128996, guid: 391f578e16d4f7b43be150d5cb852323,
type: 3}
m_TargetAssemblyTypeName: TutorialAnimPanelController, Assembly-CSharp
m_MethodName: Show
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
onComplete:
m_PersistentCalls:
m_Calls:
- m_Target: {fileID: 7187599994600413992, guid: 4d761fd80ffc7504cbfe46a9d52a46ef,
type: 3}
m_TargetAssemblyTypeName: JpystickTutorial, Assembly-CSharp
m_MethodName: Hide
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
- m_Target: {fileID: 3325711598849128996, guid: 391f578e16d4f7b43be150d5cb852323,
type: 3}
m_TargetAssemblyTypeName: TutorialAnimPanelController, Assembly-CSharp
m_MethodName: Hide
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
timeout: 0
requiredKey: 323
touchTargetIndex: -1
deactiveObjectIndex: -1
nextStep: {fileID: 0}

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 3629cede21d4bb340924cd9b1d401bb9
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,81 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: b22d834cf5e26e647be215074940d40e, type: 3}
m_Name: SecondTutorialStep
m_EditorClassIdentifier:
message: "\uC67C\uCABD \uC544\uB798 \uC870\uC774\uC2A4\uD2F1\uC744 \uC704\uB85C
\uB4DC\uB798\uADF8 \uD574\uBCF4\uC138\uC694.\n\uD574\uB2F9 \uC704\uCE58\uC5D0
\uBE68\uAC04 \uC778\uB514\uCF00\uC774\uD130 \uC560\uB2C8\uBA54\uC774\uC158\uC744
\uC7AC\uC0DD\uC911\uC785\uB2C8\uB2E4."
onBegin:
m_PersistentCalls:
m_Calls:
- m_Target: {fileID: 3325711598849128996, guid: bb56cf86788033f41ae91bd4bc593044,
type: 3}
m_TargetAssemblyTypeName: TutorialAnimPanelController, Assembly-CSharp
m_MethodName: Show
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
- m_Target: {fileID: -3457973789329276246, guid: 7d3bc5ecd8c87f64f8a9e137674ee021,
type: 3}
m_TargetAssemblyTypeName: TutorialPlayerController, Assembly-CSharp
m_MethodName: Show
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
onComplete:
m_PersistentCalls:
m_Calls:
- m_Target: {fileID: 3325711598849128996, guid: bb56cf86788033f41ae91bd4bc593044,
type: 3}
m_TargetAssemblyTypeName: TutorialAnimPanelController, Assembly-CSharp
m_MethodName: Hide
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
- m_Target: {fileID: -3457973789329276246, guid: 7d3bc5ecd8c87f64f8a9e137674ee021,
type: 3}
m_TargetAssemblyTypeName: TutorialPlayerController, Assembly-CSharp
m_MethodName: Hide
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
timeout: 0
requiredKey: 0
touchTargetIndex: 0
deactiveObjectIndex: 0
nextStep: {fileID: 11400000, guid: c25f773b8e1446d45837ee656d510061, type: 2}

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: a6f10decfc8504843b358ab8893c01f7
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,66 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: b22d834cf5e26e647be215074940d40e, type: 3}
m_Name: ThirdTutorialStep
m_EditorClassIdentifier:
message: "\uAC00\uC9DC \uC870\uC774\uC2A4\uD2F1 \uBC29\uD5A5\uB300\uB85C \uC9C1\uC9C4\uD569\uB2C8\uB2E4..
\uBC29\uD5A5 \uC81C\uD55C\uD560 \uC544\uC774\uB514\uC5B4 \uAD6C\uD574\uC694.."
onBegin:
m_PersistentCalls:
m_Calls:
- m_Target: {fileID: 6973777276245600638, guid: ac48046581f0206449e480caaee1ae59,
type: 3}
m_TargetAssemblyTypeName: FowardFixedJoystickController, Assembly-CSharp
m_MethodName: Show
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
- m_Target: {fileID: -3457973789329276246, guid: 29492c975fd1aaa40903e821b69daa29,
type: 3}
m_TargetAssemblyTypeName: TutorialPlayerController, Assembly-CSharp
m_MethodName: Show
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
onComplete:
m_PersistentCalls:
m_Calls:
- m_Target: {fileID: 6973777276245600638, guid: ac48046581f0206449e480caaee1ae59,
type: 3}
m_TargetAssemblyTypeName: FowardFixedJoystickController, Assembly-CSharp
m_MethodName: Hide
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
timeout: 2.3
requiredKey: 0
touchTargetIndex: -1
deactiveObjectIndex: 0
nextStep: {fileID: 11400000, guid: 3629cede21d4bb340924cd9b1d401bb9, type: 2}

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: c25f773b8e1446d45837ee656d510061
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

BIN
Assets/LIN/Scripts/Tutorial/TutorialAnim1.prefab (Stored with Git LFS) Normal file

Binary file not shown.

View File

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

BIN
Assets/LIN/Scripts/Tutorial/TutorialAnim2.prefab (Stored with Git LFS) Normal file

Binary file not shown.

View File

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

View File

@ -0,0 +1,24 @@
using System.Collections;
using System.Collections.Generic;
using Unity.VisualScripting;
using UnityEngine;
using UnityEngine.Serialization;
using UnityEngine.UI;
public class TutorialAnimPanelController : MonoBehaviour
{
public GameObject imagePanel; //prefab
private GameObject panelObject;
public void Show()
{
var parentObject = FindObjectOfType(typeof(Canvas));
panelObject = Instantiate(imagePanel,parentObject.GameObject().transform);
panelObject.SetActive(true);
}
public void Hide()
{
Destroy(panelObject);
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: b2248206441e1a34fb7bcf3f9f7365f6
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -15,7 +15,7 @@ public class TutorialManager : MonoBehaviour
[Header("튜토리얼 터치 타겟들")]
[SerializeField] private GameObject[] touchTargets;
[Header("터치 타겟에 맞춰 감춰놓을 게임 오브젝트")]
[Header("감춰놓을 게임 오브젝트")]
[SerializeField] private GameObject[] lockTargets;
private Coroutine _runningCoroutine;
@ -28,6 +28,7 @@ public class TutorialManager : MonoBehaviour
public void StartTutorial()
{
overlay.gameObject.SetActive(true);
overlay.alpha = 1f;
overlay.blocksRaycasts = true;
RunStep(firstStep);
@ -53,7 +54,12 @@ public class TutorialManager : MonoBehaviour
if (step.touchTargetIndex >= 0)
{
targetRt = touchTargets[step.touchTargetIndex].GetComponent<RectTransform>();
lockTargets[step.touchTargetIndex].SetActive(false);
touchTargets[step.touchTargetIndex].SetActive(true);
}
//화면에서 숨겨야 할 요소가 있는지 체크
if (step.deactiveObjectIndex >= 0)
{
lockTargets[step.deactiveObjectIndex].SetActive(false);
}
while (!done)
@ -73,9 +79,18 @@ public class TutorialManager : MonoBehaviour
if (RectTransformUtility.RectangleContainsScreenPoint(
targetRt, screenPos, overlayCanvas.worldCamera))
{
yield return new WaitForSeconds(1f);
// done = true;
// Debug.Log("영역 터치");
Debug.Log("타겟 터치");
targetRt = null;
touchTargets[step.touchTargetIndex].SetActive(false);
if (step.deactiveObjectIndex >= 0)
{
lockTargets[step.deactiveObjectIndex].SetActive(true);
}
done = true;
}
else
{
Debug.Log("타겟이 아닌 곳 터치");
}
}
}

BIN
Assets/LIN/Scripts/Tutorial/TutorialPlayer Variant.prefab (Stored with Git LFS) Normal file

Binary file not shown.

View File

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

BIN
Assets/LIN/Scripts/Tutorial/TutorialPlayer.prefab (Stored with Git LFS) Normal file

Binary file not shown.

View File

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

View File

@ -0,0 +1,39 @@
using System.Collections;
using System.Collections.Generic;
using Unity.VisualScripting;
using UnityEngine;
using UnityEngine.Serialization;
public class TutorialPlayerController : MonoBehaviour
{
public GameObject tutorialPlayer;
// public Transform tutorialPlayerTransform;
//
// private Vector3 targetPosition = new Vector3(6.12f,0f,-2.43f);
private GameObject tutorialPlayerObject;
public void Show()
{
tutorialPlayerObject = Instantiate(tutorialPlayer);
tutorialPlayerObject.SetActive(true);
}
public void Hide()
{
Destroy(tutorialPlayerObject);
}
// public void ForceMovement()
// {
// tutorialPlayerObject = Instantiate(tutorialPlayer);
// tutorialPlayer.SetActive(true);
//
// // tutorialPlayerObject.transform.position = targetPosition;
// // Debug.Log("rigidBody found force movement completed");
//
// }
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: a1ef688f938191c499a371acae89030a
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,30 @@
using System.Collections;
using System.Collections.Generic;
using Unity.VisualScripting;
using UnityEngine;
public class TutorialPlayerMove : MonoBehaviour
{
void Awake()
{
StartCoroutine(ForceMove());
}
IEnumerator ForceMove()
{
while (transform.position.z < -3.1f)
{
transform.position += new Vector3(0, 0, 0.02f);
yield return new WaitForFixedUpdate();
}
}
// private void Update()
// {
// if (transform.position.z < -3.0f)
// {
// this.GameObject().transform.Translate(new Vector3(0,0,1) * (1f * Time.deltaTime));
// // this.GameObject().transform.position = new Vector3(transform.position.x, transform.position.y, transform.position.z +(1f * Time.deltaTime));
// }
// }
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: a434c8ba2e5f48745bf550c47a2ebb5f
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -15,6 +15,8 @@ public class TutorialStep : ScriptableObject
[Tooltip("터치해야 할 위치가 있다면, 게임매니저에게 인덱스 전달")]
public int touchTargetIndex=-1;
[Tooltip("배경캔버스에서 끌 오브젝트 인덱스 전달")]
public int deactiveObjectIndex=-1;
[Tooltip("다음 단계로 넘어갈 TutorialStep, null이면 튜토리얼 종료")]
public TutorialStep nextStep;

BIN
Assets/LIN/Scripts/Tutorial/move_Tutorial_player.prefab (Stored with Git LFS) Normal file

Binary file not shown.

View File

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

BIN
Assets/LIN/Scripts/Tutorial/tmp_Tutorial_player.prefab (Stored with Git LFS) Normal file

Binary file not shown.

View File

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

BIN
Assets/LIN/TutorialAnimController.controller (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 9b52bf42130896940b1762721509ab7d
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 9100000
userData:
assetBundleName:
assetBundleVariant:

BIN
Assets/LIN/TutorialIndicateAnimation.anim (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: cd947f5b39b9e6549885e225061e752d
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 7400000
userData:
assetBundleName:
assetBundleVariant: