어떤 문장의 각 알파벳을 일정한 거리만큼 밀어서 다른 알파벳으로 바꾸는 암호화 방식을 시저 암호라고 합니다. 예를 들어 "AB"는 1만큼 밀면 "BC"가 되고, 3만큼 밀면 "DE"가 됩니다. "z"는 1만큼 밀면 "a"가 됩니다. 문자열 s와 거리 n을 입력받아 s를 n만큼 민 암호문을 만드는 함수, solution을 완성해 보세요.
"AB" | 1 | "BC" |
---|---|---|
"z" | 1 | "a" |
"a B z" | 4 | "e F d" |
public class Solution
{
public string solution(string s, int n)
{
string answer = "";
char[] chars = s.ToCharArray();
for (int i = 0; i < chars.Length; i++)
{
int num = chars[i];
if (num >= 97 && num <= 122)
{
if (num + n > 122)
{
chars[i] = (char)(96 + ((num + n) - 122));
}
else
{
chars[i] = (char)(num + n);
}
}
else if (num >= 65 && num <= 90)
{
if (num + n > 90)
{
chars[i] = (char)(64 + ((num + n) - 90));
}
else
{
chars[i] = (char)(num + n);
}
}
answer += chars[i];
}
return answer;
}
}
역시나 내 친구 ToCharArray() 메서드를 기본으로 이용하여 풀었다. z, Z를 넘어가면 a, A가 되는 것에서 약간 버벅임이 있었지만 조건문을 소문자 대문자를 걸러주어서 해결하였다.
필요한 사항
1. 위의 사항을 점검하고 알맞게 두 스크립트의 수정이 필요해 보인다.
1. FSM에 맞게 강의에 따라 우선 구현을 시도한다.
2. 정상적으로 무기 공격이 동작한다면 상태이상 시스템을 적용해 본다. 요건 나중에
https://teamsparta.notion.site/231211-4c21f35ab2dc494eb063a324a94e54de
공격 시 target이 되는 몬스터를 rotate로 바라보게 만들자.
recipe로 만들 수 있는 것들의 종류를 늘리자.
PlayerComboAttackState.cs
protected GameObject target;
protected string targetTag;
public override void Enter()
{
base.Enter();
StartAnimation(_stateMachine.Player.AnimationData.ComboAttackParameterHash);
ToolItemData tool = _stateMachine.Player.EquippedItem.itemData as ToolItemData;
var targets = Physics.OverlapSphere(_stateMachine.Player.transform.position, tool.range,
tool.targetLayers);
if (targets.Length == 0)
{
return;
}
if (targets[0].CompareTag(tool.targetTagName))
{
target = targets[0].gameObject;
targetTag = target.tag;
RotateOfTarget();
return;
}
}
private void RotateOfTarget()
{
var look = target.transform.position - _stateMachine.Player.transform.position;
look.y = 0;
var targetRotation = Quaternion.LookRotation(look);
_stateMachine.Player.transform.rotation = targetRotation;
}
준욱님이 작성하신 코드를 기반으로 구현하였다. Slerp를 이용하여 부드럽게 동작하는 것을 시도하여 보았지만 잘 되지 않았다 . . . update문 안에서 구현해야하나?? 일단 급한 건 아니니 추후에 수정할 예정이다.
정민님이 레시피 베이스를 잘 구현해놓으셔서 모델의 위치 잡기와 어드레서블에 연결시켜 주는 작업만으로도 이슈 없이 구현할 수 있었다. 역시 고수 . . .
현재 넉백 시스템이 몬스터의 rigidbody를 이용하여 실행되고 있는데 준욱님의 피드백으로 넉백 코드를 따로 빼서 컴포넌트 형식을 요청하셨다. 내일 트라이할 예정이다.
공격 시 몬스터를 바라보는 기능을 추가하였습니다.
레시피 제작 아이템 중 EnchantedPickAxe를 추가하였습니다.
레시피 제작 목록을 업데이트 중입니다.
넉백 이슈로 인해 관련된 코드들을 주석처리하였습니다.