Unity鼠标点击地面控制人物移动

来源:互联网 发布:nat网络穿透 编辑:程序博客网 时间:2024/04/30 11:50
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);        }    }}

0 0
原创粉丝点击