Skip to content

TIOGx/SingleRPG

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation



coding


Single RPG Project
νŒ€ λ‹¨μœ„λ‘œ μ œμž‘ν•œ μžμž‘ Single RPG



Project

Stack Unity, C#

Develop 2021.12 ~ 2022.04

Made by TIOGX μ΄νš¨μ›, 정은지

Index

Features
1. λ‘œλΉ„μ”¬ : 씬 이동
2. ν”Œλ ˆμ΄μ–΄ 이동 및 카메라 이동, λ―Έλ‹ˆλ§΅ κ΅¬ν˜„
3. npcμ™€μ˜ μƒν˜Έμž‘μš©
4. npcμ™€μ˜ λŒ€ν™” 및 ν€˜μŠ€νŠΈ μ‹œμŠ€ν…œ, UI
5. ν€˜μŠ€νŠΈ ꡬ뢄 및 ν˜„μž¬ 진행쀑인 ν€˜μŠ€νŠΈ CHECK
6. μ „νˆ¬ ν€˜μŠ€νŠΈ μ§„ν–‰ μ˜ˆμ‹œ 및 λͺ¬μŠ€ν„°μ™€ ν”Œλ ˆμ΄μ–΄ κ°„μ˜ μƒν˜Έμž‘μš©(μ „νˆ¬)
7. μ•‘μ…˜μ»¨νŠΈλ‘€λŸ¬λ₯Ό ν†΅ν•œ μ•„μ΄ν…œ ν€˜μŠ€νŠΈ μ§„ν–‰ μ˜ˆμ‹œ 및 μ•„μ΄ν…œμ˜ 인벀토리에 μ €μž₯
8. ν€˜μŠ€νŠΈ 보상 및 store uiλ₯Ό μ΄μš©ν•œ κ³¨λ“œ μ†ŒλΉ„
9. μŠ€ν‚¬ κ΅¬ν˜„ 및 μΆ”κ°€ κΈ°λŠ₯ μ„€λͺ…
10. 보슀 μ „νˆ¬ μ‹œμŠ€ν…œ

GamePlay Video

Features

1. λ‘œλΉ„μ”¬ : 씬 이동

스크란샷 2022-04-16 α„‹α…©α„Œα…₯ᆫ 12 10 35

  • UnityEngine.SceneManagement 라이브러리의 SceneManager.LoadScene() ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ 씬 이동 κ΅¬ν˜„

2. ν”Œλ ˆμ΄μ–΄ 이동 및 카메라 이동, λ―Έλ‹ˆλ§΅ κ΅¬ν˜„

스크란샷 2022-04-16 α„‹α…©α„Œα…₯ᆫ 12 11 47

  • ν”Œλ ˆμ΄μ–΄ 이동

    • Input.GetAxis()λ₯Ό 톡해 ν‚€λ³΄λ“œ μž…λ ₯을 λ²‘ν„°κ°’μœΌλ‘œ λ³€ν™˜ν•˜κ³ , moveInput.magnitudeλ₯Ό 톡해 ν•΄λ‹Ή λ°±ν„°μ˜ 크기λ₯Ό κ΅¬ν•˜μ—¬ 0 μ΄μƒμ˜ 경우(μ›€μ§μž„μ΄ μžˆλŠ” 경우) isMove λ³€μˆ˜λ₯Ό true둜 λ³€ν™˜ν•˜μ—¬ μ›€μ§μ΄λŠ” μƒνƒœλ₯Ό ꡬ뢄 ν•  수 μžˆλ‹€.
    Vector2 moveInput = new Vector2(Input.GetAxis("Horizontal"), Input.GetAxi("Vertical"));
    bool isMove = moveInput.magnitude > 0;
    • 카메라가 λ°”λΌλ³΄λŠ” λ°©ν–₯κ³Ό ν‚€λ³΄λ“œ μž…λ ₯ 벑터 μ‚¬μ΄μ˜ 연산을 톡해 μ΄λ™ν•˜κ³ μž ν•˜λŠ” λ°©ν–₯ 벑터λ₯Ό κ΅¬ν•œ ν›„, ν”Œλ ˆμ΄μ–΄ 객체의 position을 ν•΄λ‹Ή λ°©ν–₯으둜 moveSpeed κ³„μˆ˜μ— λ§žλŠ” μ†λ„λ‘œ μ΄λ™μ‹œν‚¨λ‹€.
    Vector3 lookForward = new Vector3(cameraArm.forward.x, 0f, cameraArm.forward.z).normalized;
    Vector3 lookright = new Vector3(cameraArm.right.x, 0f, cameraArm.right.z).normalized;
    Vector3 moveDir = lookForward * moveInput.y + lookright * moveInput.x;
    
    characterBody.forward = moveDir;
    transform.position += moveDir * Time.deltaTime * moveSpeed;
  • 카메라 λ°©ν–₯ μ „ν™˜ 및 쀌인 μ€Œμ•„μ›ƒ

    • 마우슀 μž…λ ₯에 따라 카메라λ₯Ό λŒλ €μ€€λ‹€. μ΄λ•Œ x,yμΆ• λ°©ν–₯으둜 μ œν•œμ„ 두어 νŠΉμ • 각도 이상 카메라가 νšŒμ „ν•˜λŠ” 것을 λ§‰λŠ”λ‹€.
    mouseX = Input.GetAxis("Mouse X") * camSpeed; // ν”„λ‘œμ νŠΈ μ„ΈνŒ…μ— μž…λ ₯ κ°’ λ§€λ‹ˆμ €λ₯Ό 보면 이름이 Mouse X둜 μ„€μ •λ˜μ–΄μžˆμŒ
    mouseY = Input.GetAxis("Mouse Y") * camSpeed;
    
    Vector3 camAngle = centralAxis.rotation.eulerAngles;
    float x = camAngle.x - mouseY;
    if(x < 180f)
    {
    x = Mathf.Clamp(x, 0f, 70f);
    }
    else
    {
       x = Mathf.Clamp(x, 335f, 361f);
    }
    centralAxis.rotation = Quaternion.Euler(x, camAngle.y + mouseX, camAngle.z);
    • 마우슀 νœ μ„ ν™œμš©ν•˜μ—¬ 쀌 κ΅¬ν˜„ 및 μ΅œλŒ€, μ΅œμ†Œ 쀌 거리 μ œν•œ
    private void Zoom()
      {
          wheel += Input.GetAxis("Mouse ScrollWheel");
          if (wheel >= -3){wheel = -3;}
          else if(wheel <= -7){wheel = -7;}
          cam.localPosition = new Vector3(0, 0, wheel);
      }
        ``` 
  • λ―Έλ‹ˆλ§΅

    • λ―Έλ‹ˆλ§΅μš© 카메라 객체 μƒμ„±ν•˜μ—¬ λ―Έλ‹ˆλ§΅ λ ˆμ΄μ–΄μ— ν•΄λ‹Ήν•˜λŠ” λ―Έλ‹ˆλ§΅ 이미지λ₯Ό μ΄¬μ˜ν•˜λŠ” ν˜•μ‹μœΌλ‘œ κ΅¬ν˜„

3. npcμ™€μ˜ μƒν˜Έμž‘μš©

스크란샷 2022-04-16 α„‹α…©α„Œα…₯ᆫ 12 12 58

  • 카메라가 λ°”λΌλ³΄λŠ” λ°©ν–₯으둜 λ°œμƒν•œ Rayκ°€ νƒœκ·Έκ°€ Npc 이고 MainCamera layer에 μ‘΄μž¬ν•˜λŠ” μ˜€λΈŒμ νŠΈμ™€ μΆ©λŒν•˜κ²Œ 되면 NPCActionController.NPCInfoAppear()κ°€ μ‹€ν–‰λœλ‹€.
  • 이λ₯Ό 톡해 ν˜„μž¬ μ–΄λ–€ NPC와 μƒν˜Έμž‘μš© ν•  수 μžˆλŠ”μ§€ μ•Œλ €μ£ΌλŠ” λ¬Έμžκ°€ κ²Œμž„ 상단에 λ‚˜νƒ€λ‚œλ‹€.

4. npcμ™€μ˜ λŒ€ν™” 및 ν€˜μŠ€νŠΈ μ‹œμŠ€ν…œ, UI

스크란샷 2022-04-16 α„‹α…©α„Œα…₯ᆫ 12 13 38 스크란샷 2022-04-16 α„‹α…©α„Œα…₯ᆫ 12 54 18

5. ν€˜μŠ€νŠΈ ꡬ뢄 및 ν˜„μž¬ 진행쀑인 ν€˜μŠ€νŠΈ CHECK

  • (T)ν‚€λ₯Ό 톡해 μƒν˜Έμž‘μš©μ„ ν•˜κ²Œ 되면, NPCManager.InitUI()와 QuestManager.checkQuest()κ°€ μ‹€ν–‰λœλ‹€.
  • NPCManager.InitUI() λ₯Ό 톡해 좩돌체의 QuestData와 NPCData에 μ ‘κ·Όν•œλ‹€. λ§Œμ•½ ν•΄λ‹Ή NPC의 ν€˜μŠ€νŠΈκ°€ 진행될 μ°¨λ‘€κ°€ μ•„λ‹ˆλΌλ©΄ Idle() μƒνƒœμ˜ ν€˜μŠ€νŠΈλ₯Ό μ£Όμ§€ μ•ŠλŠ” κΈ°λ³Έ μƒνƒœ UIκ°€ μƒμ„±λ˜κ³  κ·Έ λ°˜λŒ€λΌλ©΄ ν€˜μŠ€νŠΈκ°€ μ‹œμž‘λœλ‹€.

  • QuestManager.checkQuest()λ₯Ό 톡해 좩돌체의 Id와 ν€˜μŠ€νŠΈ Typeλ₯Ό ν™•μΈν•œλ‹€. ν•΄λ‹Ή μ •λ³΄λ‘œ ν€˜μŠ€νŠΈμ˜ 진행도와 클리어 μ—¬λΆ€λ₯Ό ν™•μΈν•œλ‹€.

    Type 1 : 사λƒ₯ ν€˜μŠ€νŠΈ
    Type 2 : 말걸기
    Type 3 : μ•„μ΄ν…œ νšλ“

  • ν€˜μŠ€νŠΈκ°€ μ‹œμž‘λ˜λ©΄ ν˜„μž¬ μ§„ν–‰λ˜κ³  μžˆλŠ” ν€˜μŠ€νŠΈμ˜ λ‚΄μš©κ³Ό 진행도가 κ²Œμž„ ν™”λ©΄ μ™Όμͺ½ UI에 ν‘œμ‹œλœλ‹€. λ˜ν•œ ν˜„μž¬ ν€˜μŠ€νŠΈκ°€ μ§„ν–‰λ˜κ³  μžˆλŠ” λŒ€μƒμ΄ λˆ„κ΅¬μΈμ§€ NPCμœ„μ˜ 마크λ₯Ό 톡해 μ•Œ 수 μžˆλ‹€.

6. μ „νˆ¬ ν€˜μŠ€νŠΈ μ§„ν–‰ μ˜ˆμ‹œ 및 λͺ¬μŠ€ν„°μ™€ ν”Œλ ˆμ΄μ–΄ κ°„μ˜ μƒν˜Έμž‘μš©(μ „νˆ¬)

스크란샷 2022-04-16 α„‹α…©α„Œα…₯ᆫ 12 18 05

  • ν”Œλ ˆμ΄μ–΄μ˜ 피격 및 λͺ¬μŠ€ν„°μ˜ 피격 νŒμ • κ΅¬ν˜„
    • ν”Œλ ˆμ΄μ–΄μ˜ 피격
      • λͺ¬μŠ€ν„°μ˜ 경우 일정 거리 내에 ν”Œλ ˆμ΄μ–΄κ°€ λ“€μ–΄μ˜€λ©΄ traceλ₯Ό μ‹€μ‹œν•˜λ©°, 곡격 사거리 μ•ˆμ— ν”Œλ ˆμ΄μ–΄κ°€ 쑴재 ν•  μ‹œ 곡격을 μ‹€μ‹œ
    • λͺ¬μŠ€ν„°μ˜ 피격
      • ν”Œλ ˆμ΄μ–΄κ°€ 곡격킀λ₯Ό μž…λ ₯μ‹œ 곡격쀑인 μƒνƒœκ°€ 되며 μ΄λ•Œ 무기와 적 μ‚¬μ΄μ˜ μΆ©λŒνŒμ •μ„ μ‹€μ‹œν•˜μ—¬ 좩돌 μ‹œ 1νšŒμ— ν•œν•˜μ—¬ ν”Œλ ˆμ΄μ–΄μ˜ 곡격λ ₯에 ν•΄λ‹Ήν•˜λŠ” 데미지λ₯Ό λͺ¬μŠ€ν„°μ—κ°€ 가함

7. μ•‘μ…˜μ»¨νŠΈλ‘€λŸ¬λ₯Ό ν†΅ν•œ μ•„μ΄ν…œ ν€˜μŠ€νŠΈ μ§„ν–‰ μ˜ˆμ‹œ 및 μ•„μ΄ν…œμ˜ 인벀토리에 μ €μž₯

스크란샷 2022-04-16 α„‹α…©α„Œα…₯ᆫ 1 00 45

  • μ•„μ΄ν…œ νšλ“ ν€˜μŠ€νŠΈ μ§„ν–‰μ‹œ, ν€˜μŠ€νŠΈ 클리어 쑰건으둜 λͺ…μ‹œλœ μ•„μ΄ν…œμ„ νšλ“ν•΄μ•Ό ν•œλ‹€.
  • Rayκ°€ νƒœκ·Έκ°€ Item인 μ˜€λΈŒμ νŠΈμ™€ μΆ©λŒν•˜κ²Œ 되면 ActionController.ItemInfoAppear() ν•¨μˆ˜κ°€ μ‹€ν–‰. 이λ₯Ό 톡해 ν˜„μž¬ μ–΄λ–€ μ•„μ΄ν…œμ„ νšλ“ν•  수 μžˆλŠ”μ§€ μ•Œλ €μ£ΌλŠ” Textκ°€ κ²Œμž„ 상단에 λ‚˜νƒ€λ‚œλ‹€.
  • (E)ν‚€λ₯Ό 눌러 μ•„μ΄ν…œμ„ νšλ“ν•˜λ©΄, ν•΄λ‹Ή μ•„μ΄ν…œμ΄ Inventory에 μΆ”κ°€λ˜κ³ , ItemDataUI.InstantiateItemDataUI()λ₯Ό 톡해 μ–΄λ–€ μ•„μ΄ν…œμ„ νšλ“ν–ˆλŠ”μ§€ UIλ₯Ό 톡해 ν”Œλ ˆμ΄μ–΄μ—κ²Œ μ•Œλ €μ€€λ‹€.

8. ν€˜μŠ€νŠΈ 보상 및 store uiλ₯Ό μ΄μš©ν•œ κ³¨λ“œ μ†ŒλΉ„

스크란샷 2022-04-16 α„‹α…©α„Œα…₯ᆫ 12 21 21 스크란샷 2022-04-16 α„‹α…©α„Œα…₯ᆫ 12 21 32 KakaoTalk_Photo_2022-04-16-01-07-56

  • νšλ“ν•œ μ•„μ΄ν…œμ΄ money일 경우, 인벀토리에 μ €μž₯λ˜μ§€ μ•Šκ³  κ²Œμž„ μƒλ‹¨μ˜ playerGold UI에 λͺ…μ‹œλœλ‹€.
  • κ³¨λ“œλ₯Ό 톡해 μƒμ μ—μ„œ ν¬μ…˜μ„ ꡬ맀할 수 μžˆλ‹€. λ§Œμ•½ μΆ©λΆ„ν•œ λˆμ„ κ°€μ§€κ³  μžˆμ§€ μ•ŠμœΌλ©΄ NotEnoughMoney μ˜€λΈŒμ νŠΈκ°€ λ‚˜νƒ€λ‚œλ‹€.
  • κ΅¬λ§€ν•œ ν¬μ…˜μ€ 인벀토리에 μ €μž₯λœλ‹€.

9. μŠ€ν‚¬ κ΅¬ν˜„ 및 μΆ”κ°€ κΈ°λŠ₯ μ„€λͺ…

KakaoTalk_Photo_2022-04-16-01-07-31 KakaoTalk_Photo_2022-04-16-01-07-56

  • 각 μŠ€ν‚¬ prefab ,SkillpoolManager을 톡해 μŠ€ν‚¬ μ‹œμŠ€ν…œ κ΅¬ν˜„

    • SkillpoolManager

    key : Keycode, value : skillprefab ν˜•νƒœμ˜ dict 자료ꡬ쑰λ₯Ό 톡해 보유 μŠ€ν‚¬μ„ 관리

    ν˜„μž¬ λ“±λ‘λœ μŠ€ν‚¬μ˜ ν‚€λ³΄λ“œ μž…λ ₯이 λ“€μ–΄μ˜¬ 경우 KeyDictionary[dic.Key].GetComponent().CanUseSkill()

    • 각 μŠ€ν‚¬ prefab

    각 ν”„λ¦¬νŒΉμ˜ 경우 κ³ μœ ν•œ μŠ€ν‚¬ 이름, 데미지, μΏ¨νƒ€μž„ 및 UseSkill() λ©”μ†Œλ“œ 보유

  • μΆ”κ°€ κΈ°λŠ₯

    • κ²Œμž„ 쒌츑 λ²„νŠΌμ„ 톡해 μ—¬λŸ¬ UI에 μ ‘κ·Όν•  수 μžˆλ‹€.

KakaoTalk_Photo_2022-04-16-01-08-30

  • ν”Œλ ˆμ΄μ–΄ 정보

ν”Œλ ˆμ΄μ–΄ 레벨, Xp, ν˜„μž¬ 체λ ₯, 곡격λ ₯, μ£Όλ¬Έλ ₯

스크란샷 2022-04-16 α„‹α…©α„Œα…₯ᆫ 12 12 16

  • κ²Œμž„ 정보

κ²Œμž„ ν”Œλ ˆμ΄ μ‹œ ν•„μš”ν•œ 킀듀이 μ •λ¦¬λ˜μ–΄ μžˆλ‹€.

KakaoTalk_Photo_2022-04-16-01-10-46

  • ν”Œλ ˆμ΄μ–΄μ˜ ν˜„μž¬ 체λ ₯이 0이 되면 ν”Œλ ˆμ΄μ–΄μ˜ μƒνƒœκ°€ Die둜 λ³€ν•˜κ³  PlayerDieUI κ°€ μΌœμ§„λ‹€.

계속 ν”Œλ ˆμ΄ν•˜κ²Œ 되면 리슀폰 μž₯μ†Œλ‘œ μ΄λ™ν•œλ‹€. 계속 ν”Œλ ˆμ΄ν•˜μ§€ μ•ŠμœΌλ©΄ λ‘œλΉ„λ‘œ λŒμ•„κ°„λ‹€.

10. 보슀 μ „νˆ¬ μ‹œμŠ€ν…œ

KakaoTalk_Photo_2022-04-16-01-16-09 KakaoTalk_Photo_2022-04-16-01-16-09 KakaoTalk_Photo_2022-04-16-01-16-09 KakaoTalk_Photo_2022-04-16-01-16-09 스크란샷 2022-04-16 α„‹α…©α„Œα…₯ᆫ 1 17 45

  • BossController.cs
    • λ³΄μŠ€λŠ” idle, tracing, die μƒνƒœλ₯Ό 가짐

    • λ§€ μ—…λ°μ΄νŠΈλ§ˆλ‹€ CheckBossState() ν•¨μˆ˜λ₯Ό 톡해 μƒνƒœλ₯Ό μ²΄ν¬ν•˜κ³ , 움직일 수 μžˆλŠ” μƒνƒœλΌλ©΄ BossMove(), 곡격 ν•  수 μžˆλŠ” μƒνƒœλΌλ©΄ BossAttack() ν•¨μˆ˜λ₯Ό μ‹€ν–‰ν•œλ‹€.

      • BossMove()

      nav.SetDestination() ν•¨μˆ˜λ₯Ό 톡해 ν”Œλ ˆμ΄μ–΄ 객체의 position을 TargetPos둜 μ§€μ •ν•œ ν›„ μ΄λ™ν•œλ‹€.

      • BossAttack()

      IsAttack() ν•¨μˆ˜λ₯Ό 톡해 보슀의 μƒνƒœ 및 곡격 μ£ΌκΈ°, 곡격 사거리 내에 ν”Œλ ˆμ΄μ–΄κ°€ μ‘΄μž¬ν•˜λŠ”μ§€ 확인 ν•œ ν›„ 곡격을 μ‹€μ‹œ

      랜덀 λ‚œμˆ˜λ₯Ό μƒμ„±ν•˜μ—¬ νŒ¨ν„΄μ„ μ„ νƒν•˜κ³  ν•΄λ‹Ή νŒ¨ν„΄μ„ μ‚¬μš©ν•œλ‹€. 이후 코루틴을 톡해 곡격 μΏ¨νƒ€μž„μ„ κ°±μ‹ ν•œλ‹€.


GamePlay Video

⬇ Youtube Link ⬇

IMAGE ALT TEXT HERE

About

πŸŽ… SingleRPG - Unity Team Project

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •