예제 #1
0
파일: Rail.cs 프로젝트: pmartin36/RailRider
    public void SpawnRail(float density, float size, float spawnAngleDiff, int segIndex, float killTime = 15f)
    {
        var isCorrupted = UnityEngine.Random.value <= corruptedRailOverrideChance;

        if (isCorrupted || Perlin.Noise01(Time.time * 5 + seed) <= density)
        {
            RailSegment r = CreateRailSegment(size, spawnAngleDiff, segIndex, killTime: killTime);

            if (isCorrupted)
            {
                r.SetCorrupted(true);
                corruptedRailOverrideChance *= 0.5f;
            }
            else
            {
                r.SetCorrupted(false);
                corruptedRailOverrideChance = 0;
            }
        }
        else
        {
            previousRailSegment = null;
            Vector2 rd     = (transform.position - lastRailSpawnPosition).normalized;
            Vector2 normal = rd.Rotate(90);
            Debug.DrawRay(transform.position, normal, Color.blue, 3f);
            nodes.Add(new RailNode(segIndex, 0, transform.position, rd, normal, isCorrupted, false));
            lastRailSpawnPosition = transform.position;
        }
    }
예제 #2
0
파일: Rail.cs 프로젝트: pmartin36/RailRider
    public void SpawnCorruptedRail(float size, float spawnAngleDiff, int segIndex)
    {
        RailSegment r = CreateRailSegment(size, spawnAngleDiff, segIndex, true);

        r.SetCorrupted(true);
        corruptedRailOverrideChance = 0.8f;

        previousRailSegment = r;
    }
예제 #3
0
파일: Rail.cs 프로젝트: pmartin36/RailRider
    public void SpawnRailWithRechargeMarker(float size, float spawnAngleDiff, int segIndex)
    {
        RailSegment r = CreateRailSegment(size, spawnAngleDiff, segIndex);

        r.SetCorrupted(false);
        OnRailRechargeMarker marker = OnRailRechargeMarker.Create();

        marker.Init();

        RailNode n = r.Nodes[r.Nodes.Length / 2];

        marker.transform.position      = new Vector3(n.Position.x, n.Position.y, -1f);
        marker.transform.localRotation = Quaternion.Euler(0, 0, Utils.VectorToAngle(n.Direction));
        marker.AttachedRailSegment     = r;
        r.RechargeMarker = marker;

        previousRailSegment = r;
    }