/* Helper Methods here */ // Get the nearest target void GetNearestTarget(bool isOnPlayerSide) { float tempDistance = 0; float distance = 0; bool isFirst = true; LargeShipAI nearestTarget = null; LargeShipAI[] targets = FindObjectsOfType <LargeShipAI>(); for (int i = 0; i < targets.Length; i++) { if (targets [i] != null) { BaseShip targetBS = targets [i].GetComponent <BaseShip> (); if ((targetBS.isPlayerSide && !isOnPlayerSide) || (!targetBS.isPlayerSide && isOnPlayerSide)) { if (isFirst) { distance = (targets [i].transform.position - transform.position).magnitude; isFirst = false; } tempDistance = (targets [i].transform.position - transform.position).magnitude; if (tempDistance <= distance) { distance = tempDistance; nearestTarget = targets [i]; } } } } if (targets.Length > 0 && nearestTarget != null) { target = nearestTarget.GetComponent <BaseShip>(); } }
// Use this for initialization void Start() { hp = maxHp; wep = GetComponent <Weapons> (); parent = GetComponentInParent <LargeShipAI> (); fighterParent = GetComponentInParent <FighterAI> (); rb = GetComponentInParent <Rigidbody> (); isPlayerSide = GetComponentInParent <BaseShip> ().isPlayerSide; pc = GetComponentInParent <PlayerControls> (); }
// Update is called once per frame void Update() { transform.Translate(transform.forward * speed * Input.GetAxis("Vertical") * Time.deltaTime); transform.Translate(transform.right * speed * Input.GetAxis("Horizontal") * Time.deltaTime); Vector3 camForward = Camera.main.transform.forward; if (Input.GetAxis("Mouse ScrollWheel") > 0) // forward { transform.Translate(camForward * zoomSpeed * Time.deltaTime); } if (Input.GetAxis("Mouse ScrollWheel") < 0) // back { transform.Translate(-camForward * zoomSpeed * Time.deltaTime); } if (Input.GetMouseButtonDown(0)) { RaycastHit hit; if (currGrid != null) { Destroy(currGrid); } if (currSelected != null) { currSelected.isSelected = false; } if (Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out hit, Mathf.Infinity)) { LargeShipAI ls = hit.collider.gameObject.GetComponent <LargeShipAI> (); Transform tr = hit.collider.gameObject.transform; if (ls != null && hit.collider.gameObject.GetComponent <BaseShip>().isPlayerSide) { ls.isSelected = true; currGrid = Instantiate(commandGrid, tr.position, transform.rotation); currSelected = ls; } } } if (Input.GetMouseButtonDown(1)) { int layermask = 1 << 9; RaycastHit hit; if (Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out hit, Mathf.Infinity, mask)) { if (currSelected != null && hit.collider.gameObject.GetComponent <BaseShip>() != null) { currSelected.target = hit.collider.gameObject.GetComponent <BaseShip> (); } } else if (Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out hit, Mathf.Infinity, layermask)) { if (currSelected != null) { currSelected.ClearWaypoints(); currSelected.AddWaypoint(hit.point); } } } }