[패스트캠퍼스 수강 후기] 올인원 패키지 : 유니티 포트폴리오 완성 100% 환급 챌린지 42회차 미션 시작합니다.
04. 배틀로얄 - 29, 30 번을 진행합니다.
저번 시간에 계속하여 BehaviourController 작업을 계속 이어나갑니다.
public class BehaviourController : MonoBehaviour
{
// 지난 시간까지 소스작업들..
private void LateUpdate() {
if (behaviourLocked > 0 || overrideBehaviours.Count == 0) {
foreach (GenericBehaviour behaviour in behaviours) {
if (behaviour.isActiveAndEnabled && currentBehaviour == behaviour.GetBehaviourCode)
behaviour.LocalLateUpdate();
}
}
else {
foreach (GenericBehaviour behaviour in overrideBehaviours)
behaviour.LocalLateUpdate();
}
}
public void SubscribeBehaviour(GenericBehaviour behaviour) {
behaviours.Add(behaviour);
}
public void RegisterDefaultBehaviour(int behaviourCode) {
defaultBehaviour = behaviourCode;
currentBehaviour = behaviourCode;
}
public void RegisterBehaviour(int behaviourCode) {
if (currentBehaviour == defaultBehaviour) {
currentBehaviour = behaviourCode;
}
}
public void UnRegisterBehaviour(int behaviourCode) {
if (currentBehaviour == behaviourCode) {
currentBehaviour = defaultBehaviour;
}
}
public bool OverrideWithBehaviour(GenericBehaviour behaviour) {
if (!overrideBehaviours.Contains(behaviour)) {
if (overrideBehaviours.Count == 0) {
foreach (GenericBehaviour behaviour1 in behaviours) {
if (behaviour1.isActiveAndEnabled && currentBehaviour == behaviour1.GetBehaviourCode) {
behaviour1.OnOverride();
break;
}
}
}
overrideBehaviours.Add(behaviour);
return true;
}
return false;
}
public bool RevokeOverridingBehaviour(GenericBehaviour behaviour) {
if (overrideBehaviours.Contains(behaviour)) {
overrideBehaviours.Remove(behaviour);
return true;
}
return false;
}
public bool IsOverriding(GenericBehaviour behaviour = null) {
if (behaviour == null) {
return overrideBehaviours.Count > 0;
}
return overrideBehaviours.Contains(behaviour);
}
public bool IsCurrentBehaviour(int behaviourCode) {
return currentBehaviour == behaviourCode;
}
public bool GetTempLockStatus(int behaviourCode = 0) {
return (behaviourLocked != 0 && behaviourLocked != behaviourCode);
}
public void LockTempBehaviour(int behaviourCode) {
if (behaviourLocked == 0)
behaviourLocked = behaviourCode;
}
public void UnLockTempBehaviour(int behaviourCode) {
if (behaviourLocked == behaviourCode)
behaviourLocked = 0;
}
public Vector3 GetLastDirection() {
return lastDirection;
}
public void SetLastDirection(Vector3 direction) {
lastDirection = direction;
}
}
여기까지 작업하고 Unity에서 컴파일 에러가 나오는지 확인해 봅니다. 네~ 아무 에러도 발생하지 않았네요 ^^~ 굳~~~
이제 이동 동작을 만들기입니다. 모든 게임에서는 이동이 기본이라고 할 수 있겠지요.
그리고 현재 프로젝트에서는 이동에 점프를 포함하는 Behaviour로 구현합니다.
FPS라 이동과 점프를 굳이 구분하여 처리할 필요가 없는 프로젝트이기 때문입니다.
해당 위치에 MoveBehaviour 스크립트를 생성하고 재미있는 소스코드 작업을 시작합니다 ^^~
///<summary>
/// 이동과 점프 동작을 담당하는 컴포넌트.
/// 충돌처리에 대한 기능도 포함
/// 기본 동작으로써 작동.
///</summary>
public class MoveBehaviour : GenericBehaviour
{
public float walkSpeed = 0.15f;
public float runSpeed = 1.0f;
public float sprintSpeed = 2.0f;
public float speedDampTime = 0.1f;
public float jumpHeight = 1.5f;
public float jumpInertialForce = 10f; // 점프 관성
public float speed, speedSeeker;
private int jumpBool;
private int groundedBool;
private bool isColliding; // 충돌 체크
private CapsuleCollider capsuleCollider;
private Transform myTransform; // 캐싱용
private void Start() {
myTransform = transform;
capsuleCollider = GetComponent<CapsuleCollider>();
jumpBool = Animator.StringToHash(AnimatorKey.Jump);
groundedBool = Animator.StringToHash(AnimatorKey.Grounded);
behaviourController.GetAnimator.SetBool(groundedBool, true);
behaviourController.SubscribeBehaviour(this);
behaviourController.RegisterDefaultBehaviour(this.behaviourCode);
speedSeeker = runSpeed;
}
// 3D 캐릭터의 이동은 우선 이동방향으로 회전하고 이동..
}
여기까지 변수 선언 및 초기화 작업이 완료되었습니다 ^^~
다음 시간에는 MoveBehaviour 함수들을 계속 구현합니다~
<위의 코드들은 제가 보면서 주요한 함수, 코드를 확인하기 위해 타이핑한 용도로, 전체 소스코드가 아님에 주의해 주세요. 전체 코드는 교육 수강을 하면 완벽하게 받으실 수가 있답니다 ^^>
패스트캠퍼스 - 올인원 패키지 : 유니티 포트폴리오 완성 bit.ly/2R561g0
'[컴퓨터] > 웹 | 앱 | 게임 개발' 카테고리의 다른 글
[패스트캠퍼스 수강 후기] 올인원 패키지 : 유니티 포트폴리오 완성 100% 환급 챌린지 44회차 미션 (0) | 2020.12.01 |
---|---|
[패스트캠퍼스 수강 후기] 올인원 패키지 : 유니티 포트폴리오 완성 100% 환급 챌린지 43회차 미션 (0) | 2020.11.30 |
[패스트캠퍼스 수강 후기] 올인원 패키지 : 유니티 포트폴리오 완성 100% 환급 챌린지 41회차 미션 (0) | 2020.11.28 |
[패스트캠퍼스 수강 후기] 올인원 패키지 : 유니티 포트폴리오 완성 100% 환급 챌린지 40회차 미션 (0) | 2020.11.27 |
[패스트캠퍼스 수강 후기] 올인원 패키지 : 유니티 포트폴리오 완성 100% 환급 챌린지 39회차 미션 (0) | 2020.11.26 |