Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 게임제작
- 유니티
- Unity
- 확장메서드
- 리듬게임에디터
- Euler
- AR Foundation
- 델리게이트
- github
- 인터페이스
- C#
- AR세팅
- Quaternion
- AR게임
- 리듬게임
- 로케트
- ExtensionMethod
- 레이캐스트
- 깃허브
- 게임개발
- callbyreference
- 소규모프로젝트
- 짐벌락
- raycast
- ar
- 1인개발
- 병맛게임
- ARProgect
- 게임
- callbyvalue
Archives
- Today
- Total
Ssssong += Dev
[퍼즐게임] WHITE POLYGON - 7 본문
7/26일자 기록이다.
Octahedron 스테이지의 기본 이동 방식을 세팅하였다.
TrainMove 스크립트를 통해 목표 지점에 도달 시 회전이 가능한 지 여부를 확인하고
끝까지 갔을 때 Collider로 검사하여 다음 기차로 교체하여 진행한다.
public override void Start()
{
base.Start();
initCanNextTrain = canNextTrain;
ResetInitState();
}
public override void Update()
{
if(nowMove)
{
gameObject.transform.position = Vector3.MoveTowards(gameObject.transform.position, nowDestination.position, moveSpeed);
if (Mathf.Abs((gameObject.transform.position - nowDestination.position).magnitude) < 0.05f)
{
//목표지점 도착 후 회전 가능, 움직이지 않음 상태로 변경
canRotate = true;
nowMove = false;
//중간지점에 왔을 때, 자동회전이 온 되어있으면 회전 시작
if (stopPos != null && autoRotate && nowDestination.gameObject.name == stopPos.gameObject.name)
{
roadRotate.rotateStart = true;
}
//도착 시 위치 및 회전값 초기화
if (destPos != null && nowDestination.gameObject.name == destPos.gameObject.name)
{
ResetInitState();
if (destHide)
{
gameObject.SetActive(false);
}
}
}
else
{
canRotate = false;
}
}
}
//이동 정보 초기화
public void ResetInitState()
{
canNextTrain = initCanNextTrain;
gameObject.transform.position = startPos.position;
gameObject.transform.rotation = startPos.rotation;
if (autoStart)
nowMove = true;
if (stopPos != null)
nowDestination = stopPos;
else
nowDestination = destPos;
DestinationChange = autoMoveAfterRotate;
}
public void ChangeDestination()
{
if(canRotate)
{
//다음 목표 지점으로 목표지점 세팅 및 움직임 시작, 다음 기차로 교체 트리거 on
nowDestination = destPos;
nowMove = true;
canNextTrain = true;
}
}
private void OnTriggerEnter(Collider other)
{
if(canNextTrain)
{
for (int i = 0; i < destCollider.Length; i++)
{
if (other == destCollider[i])
{
nextTrain.gameObject.SetActive(true);
if (nextTrain.gameObject.GetComponent<AutoChangeTrain>() != null)
nextTrain.gameObject.GetComponent<AutoChangeTrain>().ChangeTrain(this);
}
}
}
}
7/27에 배경에 이어진 선로에 따라 기차의 이동 방향이 변경되도록 하였다.
기존의 배경에 적용된 옵저버 패턴에 추가된 기능이다.
배경 회전이 끝날 시 SettedTrain을 통해 활성화되어 있는 기차에 대해 출발 가능 여부와 목적지가 세팅된다.
public void SettedTrain()
{
bool trainActive = false;
for(int i=0;i< ActiveRoadNum.Length;i++)
{
//현재 이어진 길에 활성화된 기차가 있는지 검사
//최초 기차가 활성화되어 있을 경우 0번이 이어졌다면 트루
if(firstTrain.isActiveAndEnabled && ActiveRoadNum[0])
{
roadChangeButton.Train = firstTrain;
roadChangeButton.trainCanMove = true;
if(i != 0 && ActiveRoadNum[i])
{
destRoad = i;
roadChangeButton.SetDestPos(destRoad);
}
}
else if(trains[i].isActiveAndEnabled && ActiveRoadNum[i])
{
activeTrain = i;
roadChangeButton.Train = trains[i];
//있다면 기차 출발 버튼 활성화
trainActive = true;
roadChangeButton.trainCanMove = true;
}
else if (ActiveRoadNum[i])
{
//기차가 활성화되지 않은 길은 자동으로 목적지가 된다.
destRoad = i;
roadChangeButton.SetDestPos(destRoad);
}
}
if (!trainActive)
activeTrain = 3;
//Debug.Log("train : " + activeTrain + ", dest : " + destRoad);
ChangeRotateAngle();
}
public class StarRoadDirButton : RoadChangeButton
public void SetDestPos(int a_DestNum)
{
//목적지 설정
settedDestPos = destPoses[a_DestNum];
//목적지에 최종으로 들어올 기차가 어느 기차인지 설정
settedNextTrain = nextTrains[a_DestNum];
Debug.Log(train.nextTrain);
//중간 회전하는 기차에 대해 목적지와 다음 기차 할당
train.nextTrain.nextTrain = settedNextTrain;
train.nextTrain.DestPos = settedDestPos;
Debug.Log(train.nextTrain);
}
//클릭시 세팅된 기차 출발
public override void OnMouseDown()
{
Debug.Log("click");
if (trainCanMove)
{
//기차 목적지 변환 설정
train.DestinationChange = true;
//기차 실질적 움직임 시작
train.nowMove = true;
//출발 버튼 비활성화
trainCanMove = false;
}
}
'개발 > WHITE POLYGON' 카테고리의 다른 글
[퍼즐게임] WHITE POLYGON - 9 (0) | 2022.08.01 |
---|---|
[퍼즐게임] WHITE POLYGON - 8 (0) | 2022.07.28 |
[퍼즐게임] WHITEPOLYGON - 6 (0) | 2022.07.24 |
[퍼즐게임] WHITE POLYGON - 5 (0) | 2022.07.19 |
[퍼즐게임] WHITEPOLYGON - 4 (0) | 2022.07.18 |