게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
유니티 스크립트 좀 봐주실수 있나요 ?
게시물ID : programmer_19257짧은주소 복사하기
작성자 : 토왕
추천 : 0
조회수 : 393회
댓글수 : 0개
등록시간 : 2016/12/09 16:51:49
옵션
  • 본인삭제금지
using UnityEngine;
using System.Collections;

public class Player3 : MonoBehaviour
{
    public Animation anim1;
    public CharacterController CC;

    RaycastHit Hit;
    Vector3 Vdir;
    Vector3 v1;
    Vector3 v2;
    Quaternion dir;
  
    float MoveSpeed = 5f;
    float TurnSpeed = 5f;
    float Distancedir;
  

    bool MoveOn;
    bool AttackOn;
    bool MonsterHiting;


    void Update()
    {
     
          if (Input.GetMouseButton(0))
        {
            Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out Hit, Mathf.Infinity, (1 << 8) | (1<<9));
            if (!MoveOn) MoveOn = true;

            if(Hit.collider.tag == "Monster")
            {
                MonsterHiting = true;
                Vdir = Hit.collider.transform.position;      
            }
            else
            {
                MonsterHiting = false;
                Vdir = Hit.point;
            }
        }
        if(AttackOn)
        {
            anim1.CrossFade("Attack", 1f);
            Destroy(Hit.collider.gameObject, 1f);
        }

        else if (MoveOn)

        {
            v1 = (Vdir - transform.position).normalized;
            Distancedir = Vector3.Distance(Vdir, transform.position);

            CC.Move(v1 * MoveSpeed * Time.deltaTime);
            CC.Move(new Vector3(0, -0.5f, 0));

            dir = Quaternion.LookRotation(v1);
            v2.y = dir.eulerAngles.y;
            dir.eulerAngles = v2;

            transform.rotation = Quaternion.Slerp(transform.rotation, dir, TurnSpeed * Time.deltaTime);


            if (Distancedir > 2f)
            {
                anim1.CrossFade("Run", 2f);
                MoveSpeed = 5f;
            }
            else if (Distancedir > 0.25f )
            {
                anim1.CrossFade("Walk", 1f);
                MoveSpeed = 3.5f;
            }
    else
            {
                if (MoveOn)
                
                    MoveOn = false;

                    if (MonsterHiting)
                    {
                        AttackOn = true;
                    }
                    else
                    {
                       anim1.CrossFade("idle", 0.25f);
                    }          
                }
        }
    }
}

이렇게 만들었는데   이게 플레이어가   마우스로 클릭을 하면 그 좌표로 달려가다가 가까이 갈수록 걷고 도착하면 멈춘다 
 
그리고 tag 가 monster 인 오브젝트를 클리기하면  Attack 하려고  만들었는데  

일단 플레이어가 도착을하면 idle 이 적용 되서 멈춰야 되는데 계속 Walk가 동작되네요 ;;  그리고

태그가 몬스터인 오브젝트를 누르면 눌리기는 하는데 어택이 동작을 안하고 뭐가 문제인지 알 수 있을 까여 ?

전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호