Esempio n. 1
0
    /* 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>();
        }
    }
Esempio n. 2
0
 // 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> ();
 }
Esempio n. 3
0
    // 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);
                }
            }
        }
    }