using UnityEngine;
using System.Collections;
public class Player : MonoBehaviour
{
static public Player instance;
NavMeshAgent agent;
Transform transCurrentEnemy = null;
Animator anim;
float distAttack = 2;
void Awake()
{
instance = this;
}
void Start()
{
agent = GetComponent<NavMeshAgent>();
anim = GetComponent<Animator>();
}
void Update()
{
if (Input.GetMouseButtonDown(0))
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if (Physics.Raycast(ray, out hit, 1000, 1 << LayerMask.NameToLayer("ground") | 1 << LayerMask.NameToLayer("enemy")))
{
if (hit.transform.gameObject.layer == LayerMask.NameToLayer("ground"))
{
agent.SetDestination(hit.point);
transCurrentEnemy = null;
}
if (hit.transform.gameObject.layer == LayerMask.NameToLayer("enemy"))
{
transCurrentEnemy = hit.transform;
}
}
}
if(transCurrentEnemy != null)
{
agent.SetDestination(transCurrentEnemy.position);
Vector3 vToEnemy =transCurrentEnemy.position - transform.position;
if(vToEnemy.sqrMagnitude < distAttack * distAttack)
{
anim.SetInteger("state",1);
}
}
}
public void PlayerAttack()
{
if (transCurrentEnemy != null)
{
Enemy enemy = transCurrentEnemy.GetComponent<Enemy>();
if (enemy != null)
enemy.SubLife(200);
}
}
}
Unity鼠标点击地面控制人物移动
最新推荐文章于 2022-08-12 10:10:15 发布