Beispiel #1
0
    public static ObjectToHit FindClosestTarget(Transform viewer, float radius, float fieldOfViewRange, ObjectToHit viewerObject)
    {
        List <ObjectToHit> allTargets = TargetsManager.FindTargetsInRadius(viewer.position, radius);
        Dictionary <ObjectToHit, Vector2> possibleTargets = new Dictionary <ObjectToHit, Vector2>();       //object, Vector2(distance, angle)

        foreach (ObjectToHit target in allTargets)
        {
//			RaycastHit hit;
            Vector3 rayDirection = target.transform.position - viewer.position;             //???
            float   angle        = Vector3.Angle(rayDirection, viewer.forward);

            if (angle < fieldOfViewRange)
            {
                RaycastHit[] hits = Physics.RaycastAll(viewer.position, rayDirection);
//				if (Physics.RaycastAll(viewer.position, rayDirection, out hit))
                foreach (RaycastHit hit in hits)
                {
                    ObjectToHit obj = hit.transform.GetComponent <ObjectToHit>();
                    if (obj == target && obj != viewerObject && !possibleTargets.ContainsKey(target))
                    {
                        //This is possible target
                        possibleTargets.Add(target, new Vector2(Vector3.Distance(viewer.position, target.center.position), angle));
                    }
                    else
                    {
                        //Target behind the obstancle
//						return false;
                    }
                }
            }
        }

        return(GetBestMatch(possibleTargets));
    }
    // Use this for initialization
    void Start()
    {
        targetsManager = GameObject.Find("TargetsManager").GetComponent <TargetsManager>();

        if (targetsManager == null)
        {
            Debug.Log("Cannot find targetsManager!");
        }
    }
Beispiel #3
0
    void Update()
    {
        if (NeedToFindNewTarget())
        {
            ObjectToHit nearestTarget = TargetsManager.GetNearestTarget(thisObjectToHit, visibleRadius);

            target = nearestTarget;

//			characterControl.SetTarget(target.transform);
        }

//		if (target == null)
//		{
//			ObjectToHit nearestTarget = TargetsManager.GetNearestTarget(thisObjectToHit, visibleRadius);
//			if (nearestTarget != null)
//			{
//				target = nearestTarget;
//			}
//		}

        if (target != null)
        {
            agent.SetDestination(target.transform.position);

            if (agent.remainingDistance < focusDistance)
            {
                movementController.FocusOnTarget(target.transform);
            }
            else if (movementController.target != null)
            {
                movementController.Unfocus();
            }

//			float distance = Vector3.Distance(transform.position, target.transform.position);
            if (agent.remainingDistance > agent.stoppingDistance)
//			if (distance > distanceToHit)
            {
                Vector3 direction = target.transform.position - transform.position;
                movementController.Move(direction, false, true);
                swordController.Run();
                swordController.StopHit();
            }
            else if (agent.velocity.magnitude < velocityToHit)
            {
                movementController.Stop();
                swordController.Stop();
                swordController.DoHit();
            }
        }
    }
 private void OnLoadCompleted(Dictionary <string, GameObject> anchorIdToObject)
 {
     foreach (string anchorId in anchorIdToObject.Keys)
     {
         int        columnNum = TargetsManager.GetColumnNumberFromColumnName(anchorId) + 1;
         GameObject columnObj;
         if (anchorIdToObject.TryGetValue(anchorId, out columnObj))
         {
             panelNumberToObject.Add(columnNum, columnObj.transform.GetChild(0).gameObject);
             columnObj.transform.GetChild(0).gameObject.GetComponent <AppPanel>().SetPanelNumber(columnNum);
             panelNumberToObject.Add(columnNum + Commons.numPanelsPerRow, columnObj.transform.GetChild(1).gameObject);
             columnObj.transform.GetChild(1).gameObject.GetComponent <AppPanel>().SetPanelNumber(columnNum + Commons.numPanelsPerRow);
             panelNumberToObject.Add(columnNum + Commons.numPanelsPerRow * 2, columnObj.transform.GetChild(2).gameObject);
             columnObj.transform.GetChild(2).gameObject.GetComponent <AppPanel>().SetPanelNumber(columnNum + Commons.numPanelsPerRow * 2);
             panelNumberToObject.Add(columnNum + Commons.numPanelsPerRow * 3, columnObj.transform.GetChild(3).gameObject);
             columnObj.transform.GetChild(3).gameObject.GetComponent <AppPanel>().SetPanelNumber(columnNum + Commons.numPanelsPerRow * 3);
         }
     }
 }
Beispiel #5
0
 private void UpdateTargets()
 {
     _targets.Add(TargetsManager.CreateTarget());
     _targets.Last().TargetGameObject = Instantiate(_targets.Last().TargetGameObject);
     _targets.Last().TargetGameObject.transform.SetParent(ParentTarget.transform);
 }
Beispiel #6
0
 void OnEnable()
 {
     TargetsManager.AddTarget(this);
 }
Beispiel #7
0
 void OnDisable()
 {
     TargetsManager.RemoveTarget(this);
 }
 // Use this for initialization
 void Start()
 {
     targetsManager = GameObject.Find("TargetsManager").GetComponent <TargetsManager>();
 }