박민혁의 개발

데바데 스킬 체크 구현 본문

TIL

데바데 스킬 체크 구현

박민혁_kog 2023. 12. 19. 16:31
public class SkillCheckMaster : MonoBehaviour
{
    int random;
    float angle;
    bool clickCheck;
    [HideInInspector] public A1205 target;
    private PlayerStatHandler playerStatHandler;
    private int movepower = 200;

    public RectTransform targetTime;
    public RectTransform targetZone;
    bool key;

    public GameObject nonePushBtn;
    public GameObject pushBtn;
    public float controlcheck;
    public float time;
    public bool btnControlBool;

    public float givePower;
    public float oldPower;
    private void OnEnable()
    {
        random = Random.Range(60, 345);
        targetZone.transform.rotation = Quaternion.Euler(0,0, random);
        angle = 0;
        key=true;
        controlcheck = 0.25f;
        time = 0f;
        btnControlBool = false;
        clickCheck = false;
        nonePushBtn.SetActive(true);
        pushBtn.SetActive(false);
    }
    public void Init(A1205 targetObj)
    {
        target = targetObj;
        playerStatHandler = target.gameObject.GetComponent<PlayerStatHandler>();
        oldPower = 0;
    }

    public void OnSkill(InputValue value)
    {
        if (key) 
        {
            nonePushBtn.SetActive(false);
            pushBtn.SetActive(true);
            clickCheck = true;
            if (angle >= random - 30 && angle <= random + 5)
            {
                PowerSet();
                target.endCall(givePower);


            }
            else
            {
                PowerSet();
                givePower = -givePower;
                target.endCall(givePower);
            }
            key = false;
        }

    }
    void Update()
    {
        if (!clickCheck)
        {
            angle += movepower * Time.deltaTime;
            time += Time.deltaTime;
            if (time >= controlcheck) 
            {
                time = 0f;
                BtnControl();
            }
        
            targetTime.transform.rotation = Quaternion.Euler(0, 0, angle);
            if (angle>= 359) 
            {
                clickCheck = true;
                PowerSet();
                givePower = -givePower;
                target.endCall(givePower);
                key = false;
            }

        }
    }
    private void BtnControl()
    {
        nonePushBtn.SetActive(btnControlBool);
        pushBtn.SetActive(!btnControlBool);
        btnControlBool = !btnControlBool;
    }
    private void PowerSet() 
    {
        playerStatHandler.ATK.added -= givePower;
        givePower = playerStatHandler.ATK.total * 0.2f;
    }
}

현재 맞춘 값을 각도로 내가 유니티를 보며 맞췄는데

실제로 이런 식으로 작동 하는걸까? 는 장담 할수 없다

 

위의 코드에서 랜덤값을 60에서 부터 시작하기 때문에 너무 가까운 곳에 등장하여 스킬체크를 놓치는 부조리를 방지했다.

 

하지만 내가 의도한 대로 작동 되고 동작에 문제가 없기에 오케이

아래는 움짤

f를 누를시 빨간선이 멈춘다 하지만 테스트 씬에 무작정 파고 넣은것이기 때문에

게임 매니저가 없어 멈추는 장면은 없다