void Start()
 {
     satelliteRb         = GetComponent <Rigidbody2D>();
     dockingRangeChecker = gameObject.GetComponentInChildren <DockingRangeChecker>();
     shipController      = GameObject.FindObjectOfType <ShipController>();
     gravityIndicator    = GameObject.FindObjectOfType <GravityIndicator>();
     scoreTracker        = GameObject.FindObjectOfType <ScoreTracker>();
     inSatelliteAtmos    = false;
     isDocked            = false;
     refuelComplete      = false;
 }
예제 #2
0
    public void UpdateIndicator(GravityIndicator indicator, GravityField field)
    {
        Vector2 indicatorGravity = field.GetGravityAtPosition(indicator.transform.position);

        indicator.GravityForce = indicatorGravity;
        float angle = Vector2.SignedAngle(indicator.transform.right, indicatorGravity);

        indicator.transform.Rotate(0.0f, 0.0f, angle);

        float strengthT   = Mathf.InverseLerp(minFieldStrength, maxFieldStrength, indicatorGravity.magnitude);
        float arrowLength = Mathf.Lerp(minArrowLength, maxArrowLength, strengthT);

        indicator.SetArrowLength(arrowLength);
    }
예제 #3
0
    public void PlaceArrows()
    {
        indicators.Clear();

        for (int x = 0; x < gridWidth; x++)
        {
            for (int y = 0; y < gridHeight; y++)
            {
                float indicatorX = startX + xSpacing * x;
                float indicatorY = startY + ySpacing * y;

                Vector2 indicatorPosition = new Vector2(indicatorX, indicatorY);

                GravityIndicator newIndicator = Instantiate(
                    original: indicatorPrefab,
                    position: indicatorPosition,
                    rotation: Quaternion.identity,
                    parent: indicatorParent);

                indicators.Add(newIndicator);
            }
        }
    }