示例#1
0
    public override void Tick()
    {
        if (Input.GetMouseButtonDown(0))
        {
            Ray        ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            RaycastHit hit = WadeUtils.RaycastAndGetInfo(ray, navLayer, Mathf.Infinity);

            if (hit.transform)
            {
                if (hit.transform.CompareTag("Target"))
                {
                    target = hit.transform;
                }
                else if (hit.transform.CompareTag("Environment"))
                {
                    target = null;
                    navMeshAgent.SetDestination(hit.point);
                }
            }
        }

        if (target && Time.frameCount % 30 == 0)
        {
            navMeshAgent.SetDestination(target.position);
        }
    }
示例#2
0
    public override void Reason(Entity entity)
    {
        if (entity is Enemy)
        {
            if (((Enemy)entity).patrolTime < 3.0f)
            {
                return;
            }
        }

        Ray        ray = new Ray(entity.transform.position, entity.transform.forward);
        RaycastHit hit = WadeUtils.RaycastAndGetInfo(ray, entity.lookDistance);

        if (!hit.transform)
        {
            return;
        }

        if (hit.transform.CompareTag("Player") || hit.transform.CompareTag("Helper"))
        {
            entity.target = hit.transform.gameObject;
            entity.DoStateTransition(EntityTransition.TargetSpotted);
        }
    }