유니티 기초

주말과제

다모아 2023. 8. 6. 14:04
using System.Collections;
using System.Collections.Generic;
using Unity.VisualScripting;
using UnityEngine;

public class HeroController : MonoBehaviour
{
    public Transform target;
    private Vector3 targetPosition;
    private Animator anim;
    private bool isMove = false;
    public float moveSpeed = 2f;
    // Start is called before the first frame update
    void Start()
    {
        this.anim = GetComponent<Animator>();
    }

    // Update is called once per frame
    void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            Debug.DrawRay(ray.origin, ray.direction * 1000f, Color.red);

            RaycastHit hitData;
            //ray와 충돌하면
            if (Physics.Raycast(ray.origin, ray.direction, out hitData))
            {
                this.targetPosition = hitData.point;//좌표라 Vector3로 targetPosition해줌.
                this.transform.LookAt(hitData.point);

                this.anim.SetInteger("State", 1);
                isMove = true;
            }
        }

        if (isMove)
        {
            this.transform.Translate(Vector3.forward * this.moveSpeed * Time.deltaTime);
            float distance = Vector3.Distance(this.transform.position, this.targetPosition);
            if (distance <= 0.9f)
            {
                isMove = false;
                this.anim.SetInteger("State", 0);
            }
        }
    }
    private void OnCollisionEnter(Collision collision)
    {
        if(collision.gameObject.tag == "target")
        {
            this.anim.SetInteger("State", 2);
        }
    }
}

뭔가 .. 잘모르겠다

타겟을 만나면 State,2를 실행하고싶은데 만나도 잘 실행이 안된다.

 

 

공격을 잘 안한다..

 

이 부분에서 distance <= 0.1f로 했을 땐 몬스터안이 Raycast로 지정되서 캐릭터가 무한으로 움직이고 

target 인식을 하는데 계속  State 1상태가 유지되서 공격을 못하는 것 같다. 어떻게 해결해야할지..

 

분명히 OnCollisionEnter에 Debug.Log("2122"); 이런식으로 넣으면 인식은 되는데 흠.. 뭔가 물체를 닿으면 멈추게 하라고 하고싶은데 어떻게 해야할지 고민해봐야할것같다.