コード例 #1
0
    private void FindRailwayOnDirection()
    {
        List <(RailNode, RailNode)> currentRails = RailManager.GetRails();

        if (currentRails == null)
        {
            return;
        }

        foreach ((RailNode, RailNode)rail in currentRails)
        {
            if (rail.Item1.Equals(this.currentNearestRailPoint))
            {
                if ((rail.Item2.transform.position - rail.Item1.transform.position).normalized == this.transform.forward)
                {
                    this.movementDirection = (rail.Item2.transform.position - rail.Item1.transform.position).normalized;
                    this.SetSpeed(0.1f);
                    this.canTurn            = false;
                    this.switchedToEndpoint = false;
                }
            }
            else if (rail.Item2.Equals(this.currentNearestRailPoint))
            {
                if ((rail.Item1.transform.position - rail.Item2.transform.position).normalized == this.transform.forward)
                {
                    this.movementDirection = (rail.Item1.transform.position - rail.Item2.transform.position).normalized;
                    this.SetSpeed(0.1f);
                    this.canTurn            = false;
                    this.switchedToEndpoint = false;
                }
            }
        }
    }
コード例 #2
0
    private void SnapToNearestRailPoint()
    {
        List <(RailNode, RailNode)> currentRails = RailManager.GetRails();

        if (currentRails == null)
        {
            return;
        }

        float    distanceRecord = Vector3.Distance(currentRails[0].Item1.transform.position, this.transform.position);
        RailNode closestRail    = currentRails[0].Item1;

        foreach ((RailNode, RailNode)rail in currentRails)
        {
            if (Vector3.Distance(rail.Item1.transform.position, this.transform.position) < distanceRecord)
            {
                closestRail = rail.Item1;
            }
            if (Vector3.Distance(rail.Item2.transform.position, this.transform.position) < distanceRecord)
            {
                closestRail = rail.Item2;
            }
        }

        if (closestRail == null)
        {
            return;
        }

        //this.transform.position = closestRail.transform.position;
        this.currentNearestRailPoint = closestRail;
    }