Priv's Blog
마우스 휠을 이용해 캐릭터가 발사할 총알 종류 바꾸기 본문
RGB 게임 제작하면서 추가한 기능.
게임 플레이 도중에 스프라이트를 변경하는 코드를 응용해 구현했다.
(중간 부분만 따로 자르기가 애매해서 전체 다 업로드)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
|
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerController : MonoBehaviour
{
Rigidbody2D rigidbody2D;
SpriteRenderer SpriteRenderer;
ProjectileController projectileController;
public Sprite[] RGB;
public GameObject[] projectile;
public float Speed = 7.0f;
public int Life = 3;
int n = -1;
void Start()
{
rigidbody2D = GetComponent<Rigidbody2D>();
SpriteRenderer = GetComponent<SpriteRenderer>();
}
void Update()
{
// Player Move
float horizontal = Input.GetAxis("Horizontal");
float vertical = Input.GetAxis("Vertical");
Vector2 move = new Vector2(horizontal, vertical);
Vector2 Position = rigidbody2D.position;
//Position.x = (Position.x + Speed * horizontal * Time.deltaTime);
//Position.y = (Position.y + Speed * vertical * Time.deltaTime);
Position = Position + (move * Speed * Time.deltaTime);
rigidbody2D.MovePosition(Position);
// Player Sight
Vector2 PlayerPos = rigidbody2D.position;
Vector2 MousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
float dy = MousePos.y - PlayerPos.y;
float dx = MousePos.x - PlayerPos.x;
float rotateDg = Mathf.Atan2(dy, dx) * Mathf.Rad2Deg;
transform.rotation = Quaternion.Euler(0.0f, 0.0f, rotateDg);
// Player Shoot
Vector2 Dir = (MousePos - PlayerPos);
if (Input.GetMouseButtonDown(0) && n != -1) // SEMI AUTO
{
GameObject projectileObject = Instantiate(projectile[n], transform.position, Quaternion.Euler(0.0f, 0.0f, rotateDg));
projectileController = projectileObject.GetComponent<ProjectileController>();
projectileController.Launch(Dir.normalized, 900);
}
// Player RGB Change
if (Input.GetAxis("Mouse ScrollWheel") > 0) // F
{
if (n >= 2)
{
n = 0;
SpriteRenderer.sprite = RGB[n];
}
else
{
n++;
SpriteRenderer.sprite = RGB[n];
}
}
else if (Input.GetAxis("Mouse ScrollWheel") < 0) // B
{
if (n <= 0)
{
n = 2;
SpriteRenderer.sprite = RGB[n];
}
else
{
n--;
SpriteRenderer.sprite = RGB[n];
}
}
}
}
|
cs |
Player Shoot 주석 부분 참고.
Instantiate()를 이용해 게임오브젝트를 복제하는데, 이 때 복제하는 게임오브젝트를 리스트 형태로 구현하면 된다.
코드 상에서는 projectile[ ] 형태로 리스트가 구현되어 있으며, Instantiate() 코드 안에 있는 projectile[n] 에서 n 변수는 플레이어의 색상을 바꾸기 위해 생성한 리스트에 쓸려고 선언한 변수 값.
마우스 휠을 위로 굴리면, n의 값이 1씩 늘어나고, 마우스 휠을 아래로 굴리면 n의 값이 1씩 감소한다.
이 n의 값을 이용해서 리스트에 저장된 스프라이트를 뽑아와 게임 플레이 도중, 마우스 휠을 이용해 캐릭터의 색상을 바꾸도록 구현했는데, 이 기능을 그대로 가져와 탄환의 색상 변경에도 적용시켰다.
'Dev. Study Note > Unity' 카테고리의 다른 글
다른 스크립트 내 변수에 접근할 때 (0) | 2020.03.15 |
---|---|
마우스 위치로 총알 발사 구현 (1) | 2020.02.29 |
캐릭터 움직임 구현 코드 응용 (0) | 2020.02.29 |
캐릭터 충돌 시 떨림 현상 개선 (0) | 2020.02.29 |
2D 캐릭터가 마우스 시점 따라가게 만들기 (0) | 2020.02.17 |
Comments