본문 바로가기
개발 (Game)/(2021) Unity RTS 포트폴리오

[Day 9-2] 외교 관계 우호도(int) 설정 및 행동에 따른 관계 변화 구현

by 진현개발일기 2021. 7. 20.

[2021. 07. 20, Tue]

타 국가와의 관계를 담은 List와 동일한 구조로 int 형태의 리스트와 딕셔너리로 정보를 저장한다.

 

[우호도 함수 수정 전]

관계(우호도) 수치 변경 함수
람다식을 대리자 인자형태로 주고싶었다.
기대와 다른 결과가 나왔다.

아마 Action(대리자)는 얕은 복사이지만, 조건문 속 대리자 안에 들어가는 변수 (x)가 깊은 복사 개념이라서 값이

안 바뀌는 것 같다 (확실한 이유는 모르겠음).

 그래서 람다식에 ref를 붙여보는데 오류가 뜨고 밑에 계산식 함수를 만들어서 람다 대신에 함수를 씌어넣어줘도 안됐었다. 일단 중요한 기능들을 끝내는 것이 우선이다. 추후에 지식이 깊어지면

그때 가서 리팩토링해도 좋을 것 같다.

 

[우호도 함수 수정 후]

성공하였다.

 

Soldier.cs의 GetAttacked 함수이다. 피가 0이 됐을 시 본인을 죽인 유닛 국가와 자국의 관계가 낮아진다.

[우호도 관련 기능 추가]

만약 적국이 아닌 국가(Nothing 혹은 Ally)가 자국(건물)을 공격(1회)한다면 우호도가 -50이 떨어지게 하였다.

국가 우호도 범위는 (아래)이다.

1.  적 <=-50

2. -50 <중립 <50

3. 50 <= 동맹

▼ 실험

현재 우호도가 0인 국가(Enemies.Count==0)를 공격하기 전이다.
공격을 감행한 후 적국이 되어버렸고 해당 국가의 모든 유닛이 플레이어 국가를 공격하러온다.
플레이어 국가의 유닛이 공격을 당했다.  (Hp 80->56)

 

[우호도 함수 리팩토링 전]

 

[우호도 함수 리팩토링 후]

우호도, 관계를 자동적으로 조절해준다
우호도, 관계 조절과 관련된 함수들
리팩토링 후 WorldBuilding.cs의 GetAttacked 일부분
리팩토링 후 실험 성공

 

(+ 깜빡한거 추가했음)

728x90