Exemple #1
0
    public void CreatePlayerShipDirectionReticles()
    {
        //Transform instancePlayerBodyTransform = instancePlayer.transform.Find("Body");

        //Create ship direction reticles
        playerShipDirectionReticleTree = new GameObject("Player Direction Reticle Tree");
        playerShipDirectionReticleTree.transform.parent = canvas.transform.Find("HUD Centre");
        playerShipDirectionReticleTree.transform.SetSiblingIndex(0); //Make sure this is drawn underneath everything else

        for (int i = 0; i < playerShipDirectionReticleListLength; i++)
        {
            //Instantiate
            GameObject instancePlayerShipDirectionReticle = Instantiate(
                playerShipDirectionReticlePrefab,
                Vector3.zero,
                Quaternion.identity
                );

            //Add to list
            playerShipDirectionReticleList.Add(instancePlayerShipDirectionReticle);

            //Put in tree
            //instancePlayerShipDirectionReticle.transform.parent = playerShipDirectionReticleTree.transform;
            instancePlayerShipDirectionReticle.transform.SetParent(playerShipDirectionReticleTree.transform, false);

            //Pass script vars
            DirectionReticle instancePlayerShipDirectionReticleScript = instancePlayerShipDirectionReticle.GetComponent <DirectionReticle>();
            instancePlayerShipDirectionReticleScript.index = i;
        }
    }
Exemple #2
0
    private void UpdatePlayerShipFacingDirectionReticleUI()
    {
        if (playerShipDirectionReticleTree != null)
        {
            for (int i = 0; i <= playerShipDirectionReticleListLength - 1; i++)
            {
                //Get references
                Transform instancePlayerBodyTransform = control.generation.instancePlayer.transform.Find("Body");

                GameObject instancePlayerShipDirectionReticle = playerShipDirectionReticleList[i];

                /*
                 * if (instancePlayerShipDirectionReticle == null)
                 * {
                 *  return;
                 *
                 *  //CreatePlayerShipDirectionReticles()
                 *  //instancePlayerShipDirectionReticle
                 *  //playerShipDirectionReticleList.Clear();
                 * }
                 */
                DirectionReticle instancePlayerShipDirectionReticleScript = instancePlayerShipDirectionReticle.GetComponent <DirectionReticle>();

                //Position in front of player ship at distance relative to index
                Vector3 reticleWorldPos = instancePlayerBodyTransform.position
                                          + ((instancePlayerBodyTransform.rotation * Vector3.forward)
                                             * (playerShipDirectionReticleForwardOffset + (playerShipDirectionReticleSpacing * Mathf.Pow(1f + instancePlayerShipDirectionReticleScript.index, playerShipDirectionReticleSpacingPower)) * playerShipDirectionReticleScale)
                                             );

                //Transform 3D world space to 2D canvas space
                instancePlayerShipDirectionReticle.transform.position = Camera.main.WorldToScreenPoint(reticleWorldPos);

                //Don't render when behind camera
                if (Vector3.Dot(reticleWorldPos - Camera.main.transform.position, Camera.main.transform.forward) < 0f)
                {
                    instancePlayerShipDirectionReticle.SetActive(false);
                }
                else
                {
                    instancePlayerShipDirectionReticle.SetActive(true);
                }
            }
        }
    }