2016. 4. 8. 10:12
https://blog.naver.com/nagne2011/220677638921
일단 FPS의 기본 바탕이 되는 케릭터 생성후,
UI카메라를 생성해서 크로스바(cross bar)를 만들어 준다음
합쳐진 화면은 이렇게 나온다
1
2
3
4
5
6
7
8
9
10
|
void Rebound()
{
if (aimCube [0].transform.localPosition.y < 2.5f)
{
aimCube[0].transform.Translate(0, _boundPower, 0); //상
aimCube[1].transform.Translate(-_boundPower,0, 0); //좌
aimCube[2].transform.Translate(_boundPower,0, 0); //우
aimCube[3].transform.Translate(0, -_boundPower, 0); //하
}
}
|
cs |
매번 발사시 위 함수를 실행하도록 설정.
반동파워만큼 크로스바가 벌어진다
계속 벌어져있으면 안되니까
1
2
3
4
5
6
7
|
if (aimCube [0].transform.localPosition.y > 0.5f)
{
aimCube[0].transform.Translate(0, -0.01f, 0); //상
aimCube[1].transform.Translate(0.01f,0, 0); //좌
aimCube[2].transform.Translate(-0.01f,0, 0); //우
aimCube[3].transform.Translate(0, 0.01f, 0); //하
}
|
cs |
요렇게 또 줄여주는 함수도 첨가.
이번 게임에서 사격은 RayCast로 처리하기로 했다
즉, 클릭시마다 RayCast를 발사해서 충돌된 물체에 대해 판정을 하는것.
단 총은 역시 반동과 흔들림이 있어야 하니까 크로스바에 맞춰 오차각을 설정해준다
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
|
void OnFire()
{
ReboundY.SendMessage ("ReboundY", _reboundPower, SendMessageOptions.DontRequireReceiver);
errorAngle += _boundPower * 10.0f;
Quaternion rotFire = Quaternion.identity;
float radRandomAngle = Random.Range (0, Mathf.PI * 2.0f);
Vector3 rotVec = new Vector3 (Mathf.Cos (radRandomAngle), Mathf.Sin (radRandomAngle), 0.0f);
Vector3 shotDir = Vector3.forward;
Quaternion oneBBulRot = Quaternion.AngleAxis (Random.Range (0, errorAngle), rotVec);
shotDir = oneBBulRot * shotDir;
rotFire = Quaternion.LookRotation (shotDir) * _gun.transform.rotation;
ray.origin = _gun.transform.position;
ray.direction = shotDir;
if(Physics.Raycast(ray, out hit, _range))
{
//충돌확인!!!
}
Rebound ();
this._isFire = true;
StartCoroutine (CoReadyFire());
}
IEnumerator CoReadyFire()
{
yield return new WaitForSeconds (1.0f / this.fireForSec);
this._isFire = false;
}
|
cs |
발사 담당 함수는 이렇게 구성했다
오차각 erroAngle에 맞춰, 랜덤적으로 원뿔 방향으로 각도가 바뀐다
거기다 발사할때마다 반동에 맞춰 erroangle값이 증가하고, 발사를 멈추면 다시 줄어든다
즉, 일반 fps와 마찬가지로 연사시 맞추기가 어려워진다
728x90
'유니티 > 실습' 카테고리의 다른 글
주말 숙제 - FPS+TD - 3 - 몬스터 출현 (0) | 2022.02.13 |
---|---|
주말 숙제 - FPS+TD - 2 - 사격반동, 맵 (0) | 2022.02.13 |
주말 숙제 - 1인칭 게임 - 5(完) (0) | 2022.02.13 |
주말 숙제 - 1인칭 게임 - 4 (0) | 2022.02.13 |
주말 숙제 - 1인칭 게임 - 3 (0) | 2022.02.13 |