コード例 #1
0
    public override void Start()
    {
        base.Start();

        RailManager rm    = GameManager.Instance.RailManager;
        int         index = Random.Range(0, RailManager.NumRails);

        // List<int> availableRails = Enumerable.Range(0, 3).ToList();

        ConnectToRail(rm.GetRail(index));
        for (int i = 0; i < AttachedRail.RailSegmentPositions.Count - 1; i++)
        {
            var screenPos = mainCamera.Camera.WorldToViewportPoint(AttachedRail.RailSegmentPositions[i + 1]);
            if (screenPos.x > 0 && screenPos.y > 0 && screenPos.x < 1 && screenPos.y < 1)
            {
                RailIndex = AttachedRail.FindIndex(AttachedRail.RailSegmentPositions[i]);
                break;
            }
        }
        RailNode nextPosition = AttachedRail.GetTargetRailNode(RailIndex);

        transform.position = nextPosition.Position;

        if (!nextPosition.Valid)
        {
            StartFreeMovement();
        }
        else
        {
            target = nextPosition;
        }

        child = transform.GetChild(0);
    }
コード例 #2
0
    private void OnSceneGUI()
    {
        List <PathElement> rails = m_target.GetRail();

        for (int i = 0; i < rails.Count; i++)
        {
            Transform[] railPathPoint = rails[i].GetPathPoints();

            for (int y = 1; y < railPathPoint.Length; y++)
            {
                Vector3 previousPosition = railPathPoint[y - 1].position;
                Vector3 actualPosition   = railPathPoint[y].position;

                Handles.color = Color.blue;
                Handles.DrawLine(previousPosition, actualPosition);
            }
        }
    }