폭탄의 도화선 파티클 모양

|


spacke.unitypackage


Trackback 0 And Comment 0

유니티 내의 특정 오브젝트 보이기/감추기 Or 컴포넌트 On/off

|

 

 게임 중에 오브젝트를 잠시동안 안보이게 하고 싶거나, 잠시동안 보이게 하고 싶을때가 있습니다. 또는 오브젝트에 연결된 컴포넌트들을 잠시동안

기능을 멈추게 하고 싶을수 도 있습니다.


먼저 오브젝트를 안보이게 하는 방법은 2가지가 있습니다.

1. 오브젝트를 비활성시킨다.

2. 오브젝트의 화면 표시를 금지한다.


1번은 인스펙터에서 오브젝트 이름 옆에 있는 체크박스를 해제하면 오브젝트가 화면에서 사라지는 것처럼 오브젝트를 일시적으로 화면에서 사라지게 하는 것이고, 2번은 오브젝트를 화면에 그리지 않도록 하는 것입니다.


1. <게임오브젝트>.SetActive(false); <-오브젝트 비활성화

2. <게임오브젝트>.renderer.enabled = false; <- 오브젝트의 화면 표시 금지


1은 오브젝트 자체를 비활성화 하는것

2은 오브젝트의 renderer 컴포넌트를 이용하는 것입니다.


아래 스크립트는 화면 클릭시 오브젝트를 사라지게 하거나 나타내게 하는 스크립트입니다.


게임오브젝트->크레이트->큐브를 하나 생성하고 빈게임오브젝트도 하나 생성합니다.

스크립트는 빈게임 오브젝트에 할당합니다. 

왼쪽버튼 클릭시 비활성화 오른쪽 버튼 클릭시 활성화 입니다.











왼쪽화면은 왼쪽 버튼을 클릭했을시 Cube 글씨 옆의 체크박스가 해제된 모습이고

오른족화면은 오른족 버튼을 클릭했을시 Cube 글씨 옆의 체크박스가 체크된 모습입니다.













위화면에서 보이듯이 왼쪽은 mesh Renderer이 체크가 해제된 모습, 오른쪽은 mesh Renderer이 체크가 된 모습입니다.


아래 스크립트 처럼 특정 스크립트를 비활성화 시킬수도 있습니다.
Cube 에 CsMove스크립트를 붙이고 실행시킨 결과입니다.







왼쪽 버튼 클릭시 CsMove 스크립트 비활성화 오른쪽 버튼 클릭시 CsMove 스크립트 활성화.



Trackback 0 And Comment 0

유니티 특정 오브젝트 생성시 시간간격 두기(실행 지연 관련)

|

유니티내에서 미사일을 발사할때나 몬스터를 생성할때 등 특정 상황에서 시간을 지연시킬 필요가 하는 경우가 많습니다.

yield 문은 함수의 실행을 일정 시간(또는 프레임) 동안 지연(보류)하는 명령입니다.


<실행문>                                                                   -> 즉시 실행한다.

..

yield return new WaitForSeconds(2.0f)                           -> <실행문2>는 2.0초 후에 실행됩니다.

..

<실행문2>


yield는 일종의 return문으로, return 문은 그 이후에 모든 문장은 무시되지만, yield는 return 한 후 지정한 시간(또는 프레임)후에 그 이후 문장이 실행됩니다. 


아래 예제는 미사일 발사시 일정 시간 동안은 발사하지 못하도록 하는 함수 입니다.






Fire1키를 누를때 canFire 키가 true인지 판단합니다. 함수를 실행하면 canFire 값이 false로 변경되고 0.2초 후에 canFire가 true가 됩니다.
canFire가 true가 되기전 키를 누를시에는 MakeMissile함수가 실행되지 않습니다.


코루틴을 사용하지 않는 방법은 아래와 같이 Time.time 값을 이용해서 총알 발사 함수를 지연시키는 방법입니다.
nextFire 변수에 Time.time + 총알 지연시간(fireRate) 의 값을 저장하여 그 이상 시간이 경과되지 않으면 함수가 실행되지 않습니다


Trackback 0 And Comment 0