티스토리 뷰

<aside> ⚠️ 해당 프로젝트는 10일 안에 빠르게 끝낼 예정으로 기획했으므로 잘 짜여진 구조의 프로젝트가 아니며 검색을 통해 프로젝트를 진행하고 있다.

</aside>

  • [x] 공격할 때만 충돌을 감지하게 해주었다
    private void OnCollisionEnter(Collision collision)
        {
            if (collision.gameObject.tag == "Attackable" && isDelay)
            {
                Rigidbody objectRig = collision.gameObject.GetComponent<Rigidbody>();
    
                if(objectRig.isKinematic == true)
                    objectRig.isKinematic = false;
    
                Debug.Log(collision.gameObject.name + "'s isKinematic off!");
            }
        }
    
    **Attackable.cs**에 추가해주었다. **isDelay** bool 값은 공격할 때만 **true**이기 때문에 조건에 같이 넣어주었다. 또 때릴 수 있는 물건들에는 **Attackable** 태그를 걸어 때릴 수 없는 사물과 차별을 주었다. 그래서 한 대만 닿아도 **isKinematic**을 꺼주어 자연스럽게 날라다닐 수 있도록 해주었다.
  • → 사실 어떻게 보면 유저와 닿아도 충돌을 감지하기 때문에 페이크이긴 하지만 쉬운 방법이기도 하다.
  • [x] 소멸 점수 구별을 위한 분류
  • 분류 이름 30 점 20점 15점 10점 2점
    점수 서버 컴퓨터 전자기기 가구 default
    충돌 횟수 15번 7번 5번 10번 3번
  • → 모든 아이템이 일정 횟수 충돌이 일어나면 **SetActive(false)**가 되고 점수를 주게 된다. 그 중에서도 우선 순위를 간단히 둘 예정이다.
  • [x] 위 분류표처럼 코드 짜서 분류하기

  • Server /Computer / Electricity / Furniture / ETCobject
  • 우선 코드가 꼬였기는 한데 작동은 한다…
  • [x] 오브젝트가 사라지는 횟수 조정하기
  •  

한번 맞고 사라지는 걸 확인할 수 있다. 위에서 나눈 큰 단위별로 각 오브젝트의 태그를 일일히 설정했다. 노가다…

void Start()
    {
        int childCount = this.transform.childCount;

        for (int i = 0; i < childCount; i++)
        {
            GameObject child = this.transform.GetChild(i).gameObject;

            child.GetComponent<Rigidbody>().isKinematic = true;
            //Debug.Log(this.transform.GetChild(i).name);

            if (child.CompareTag("Server"))
            {
                obj_Server.Add(child);
                child.AddComponent<CollisionCount>();
                child.GetComponent<CollisionCount>().collisionCnt = serverCnt;
                child.GetComponent<CollisionCount>().distroyScore = serverScr;
            }

이런 식으로 **Start()** 함수가 작동하면 자식 오브젝트의 총 개수를 파악해서 반복문을 돌며 각 일들을 수행한다. 더 간단한 방법이 바로 떠오르지 않아 주먹구구식으로 진행했다.

키보드에 붙은 collider가 크기 때문에 한 번만에 사라지는 물건이 많은 것이다. **OnCollisionEnter**가 아닌 **OnCollisionExit**으로 한번 바꿔봐야겠다.

→ 바꿨을 때 그나마 한 두 번 때릴 수 있는 횟수가 늘어나긴 했지만… 횟수를 올리거나 코루틴을 사용해야 하나? 우선은 코드를 더 수정하는 것보다는 간단한 방법인 횟수들을 올려주었다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
«   2025/07   »
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
링크
Total
Today
Yesterday