본문 바로가기

C#60

[C#][Unity] SetActive와 enabled GameObject.SetActive : 오브젝트를 활성화, 비활성화를 하는 역할을 합니다. 오브젝트를 비활성화 시키면 오브젝트 자체가 씬, 게임뷰에서 사라지고 작동하지 않습니다. SetActive는 주어진 bool값에 따라 게임 오브젝트를 활성화 / 비활성화 합니다. 만약 게임오브젝트가 비활성화 되어 있다면 그 게임오브젝트의 부모 게임오브젝트가 비활성화 되어있을 수도 있습니다. 이런 경우에는 SetActive()를 호출하여 활성화시킬 수 없고 GameObject.activeSelf를 사용하여 GameObject의 로컬 상태만 확인할 수 있습니다. Unity에서는 부모가 활성화 될 때 이 SetActive로 상태값을 사용할 수 있습니다. Behaviour.enabled : 오브젝트에 추가되어 있는 컴포넌.. 2022. 11. 16.
[C#][Unity] 2D 오브젝트 제거시 아이템드랍 안녕하세요. 오늘은 오브젝트 제거시 아이템이 나오는 예제를 진행하겠습니다. 더보기 기존예제인 클릭으로 2D오브젝트 제거하기에서 이어지는 예제입니다. https://stickode.tistory.com/610 먼저 드랍될 오브젝트를 생성합니다. 그리고 제거되는 오브젝트의 스크립트 파일을 추가합니다. (기존예제에서 TreeCuttable.cs 로 진행했던 파일을 수정하시면 됩니다) //TreeCuttable.cs public class TreeCuttable : ToolHit { [SerializeField] GameObject pickUpDrop; [SerializeField] int dropCount = 5; //아이템 드랍수 [SerializeField] float spread = 0.7f; // 퍼지.. 2022. 11. 13.
[C#][Unity] 점프 샘플 코드 유니티에서 자주 쓰이는 점프 스크립트입니다. 여러 방식이 있겠으나, 가장 간단한 방법중 하나입니다. using System.Collections; using System.Collections.Generic; using UnityEngine; public class jump : MonoBehaviour { public float jumpHeight = 7f; public bool isGrounded; public float NumberJumps = 0f; public float MaxJumps = 2; private Rigidbody rb; void Start() { rb = GetComponent(); } void Update() { if (NumberJumps > MaxJumps - 1) { isGro.. 2022. 11. 5.
[C#][Unity] 로그 찍기 로그를 확인하기 위해서 유니티에서 많이 사용되는 Debug.Log 함수를 쓰게됩니다. 이 함수를 사용하기 위해 매개변수가 필요합니다. 여기에서 매개변수는 우리가 로그를 통해 확인하고 싶은 값입니다. 예를 들어 스크립트가 들어 있는 게임 오브젝트의 이름을 로그로 찍고 싶다고 하면 아래 코드를 스크립트에 붙여 넣어 보세요. void Start() { Debug.Log(name); }​ 2022. 11. 1.
[C#][Unity] 클릭으로 2D 오브젝트 제거하기 안녕하세요. 오늘은 마우스 클릭으로 오브젝트를 제거하는 예제를 진행하겠습니다. 먼저 제거할 오브젝트를 배치합니다. (저의 경우는 이미지에서 보이는 나무 - Medium Tree 입니다.) 그리고 스크립트를 새로 생성합니다. ToolHit 라는 스크립트와 TreeCuttable 이라는 스크립트를 생성하겠습니다. 먼저 ToolHit 입니다. public class ToolHit : MonoBehaviour { public virtual void Hit(){ } } ToolHit 는 인터페이스 역할을 할 스크립트입니다. 이 파일을 다른 스크립트에서 Hit를 재정의 해서 사용하게 됩니다. 다음은 TreeCuttable 스크립트 입니다. public class TreeCuttable : ToolHit { publ.. 2022. 10. 29.
[C#][Unity] Awake와 Start의 차이 빈번히 사용하는 Update()와 달리 Awake()와 Start()는 Initalization 구역으로 스크립트의 초기화에 이용된다. 단, 호출의 순서는 Awake() -> Start()로 Awake()가 먼저 호출되는데, 둘의 차이는 Awake는 모든 오브젝트가 초기화되고 호출되고, Start는 스크립트 인스턴스가 활성화된 경우에만 호출된다는 점이다. 간단히 말하면, Awake는 항상 Start 함수의 이전 및 프리팹의 인스턴스화 직후에 호출 Start는 첫 번째 프레임의 업데이트 전에 Start가 호출된다. 만약 Start만으로 모든 스크립트를 초기화한다고 생각해보자. UnitA와 EnemyA에게 적용한 스크립트가 각각 다르고 유닛들을 관리하는 Controller의 Start에서 각 유닛을 Inst.. 2022. 10. 17.
[C#][Unity] 2D 오브젝트 화살표로 강조표시 안녕하세요. 오늘은 오브젝트에 다가가면 화살표로 강조표시 해주는 예제를 진행하겠습니다. 더보기 환경은 다음과 같습니다. 유니티 버전 - 2021.3.4f1 또한, 앞의 유니티 2D 상자열고닫기 예제와 이어지는 예제입니다. 강조표시인 하이라이트는 Interactable.cs 를 상속한 오브젝트에 화살표가 표시되게금 구현하겠습니다. 강조 표시를 원하는 오브젝트에 Interactable.cs를 상속한 스크립트를 컴포넌트 추가 하시면 원하는 오브젝트에 표시가 됩니다. 먼저 강조표시로 사용할 화살표 이미지를 불러옵니다. 그리고 화살표를 강조표시로 드래그해서 계층구조에 넣어주시고, 적절한 크기로 줄여주세요. 그런 다음, 계속해서 상속해서 사용할 Interactable 스크립트를 작성합니다. 앞서 상자 열고 닫기 예.. 2022. 10. 16.
[C#][Unity] 2D 캐릭터 이동시 현재방향 저장 안녕하세요 오늘은 캐릭터 이동시 마지막 방향대로 캐릭터가 계속 유지하는 예제를 진행하겠습니다. 기존예제 더보기 https://stickode.tistory.com/530?category=937544 먼저 기존 캐릭터 이동에 사용한 animation controller 를 선택합니다. 애니메이터 - 파라미터에서 float 자료형의 lastHorizontal, lastVertical 과 bool 자료형의 moving 파라미터를 생성합니다. 그리고 기존 캐릭터에 사용한 controller 스크립트를 수정하겠습니다. (기존 예제에서는 playerController 파일로 되어있습니다.) //CharacterController2D.cs [RequireComponent(typeof(Rigidbody2D))] pub.. 2022. 10. 14.
[C#][Unity] 중력 조절 Rigidbody 컴포넌트 사용시 해당 오브젝트에게 중력을 부여할수 있습니다. 그 중력 값은 Edit > Project setting > physics 가면 중력값 변경할수 있습니다. 혹은 스크립트 상에서 Physics.gravity = new Vector3(0,-10f,0); 와 같이 코드입력하여 제어 할수 있습니다. 위와같이 중력값을 변경하게 되면 Rigidbody 컴포넌트를 가진 오브젝트들이 영향을 받습니다. 오브젝트 개별적으로 중력값 다르게 하려면 어떻게 해야할까요 오브젝트 개별적으로 중력값 다르게 하는 방법입니다 . 1. 해당 오브젝트에 Constant Force 컴포넌트를 추가 하고 Force 벡터 값에 원하는 중력값을 넣습니다. 2. 스크립트상에서 FixedUpdate () 함수문 안에 Ri.. 2022. 10. 1.