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가 동작되네요 ;; 그리고
태그가 몬스터인 오브젝트를 누르면 눌리기는 하는데 어택이 동작을 안하고 뭐가 문제인지 알 수 있을 까여 ?