コード例 #1
0
        void OnEnable()
        {
            creator = (PathCreator)target;
            bool in2DEditorMode = EditorSettings.defaultBehaviorMode == EditorBehaviorMode.Mode2D;

            creator.InitializeEditorData(in2DEditorMode);
            positionOld = creator.transform.position;
            rotationOld = creator.transform.rotation;
            scaleOld    = creator.transform.localScale;

            data.bezierCreated     -= ResetState;
            data.bezierCreated     += ResetState;
            Undo.undoRedoPerformed -= OnUndoRedo;
            Undo.undoRedoPerformed += OnUndoRedo;

            LoadDisplaySettings();
            UpdateGlobalDisplaySettings();
            UpdateToolVisibility();
            ResetState();
        }
コード例 #2
0
    protected override void Execute(List <GameEntity> entities)
    {
        for (int i = 0; i < entities.Count; i++)
        {
            if (entities[i].hasAnimationInfo || entities[i].hasMoveAnimation || entities[i].hasScaleAnimation)
            {
                continue;
            }

            var chain = GetChain(entities[i].parentChainId.value);
            if (chain == null)
            {
                _contexts.manage.CreateEntity()
                .AddLogMessage($"Failed to change disntace ball. Chain is null", TypeLogMessage.Error, true, GetType());
                continue;
            }

            var track = GetTrack(chain.parentTrackId.value);
            if (track == null)
            {
                _contexts.manage.CreateEntity()
                .AddLogMessage($"Failed to change disntace ball. Track is null", TypeLogMessage.Error, true, GetType());
                continue;
            }

            float       distance    = entities[i].distanceBall.value;
            PathCreator pathCreator = track.pathCreator.value;

            // Move Position
            Vector2 position = pathCreator.path.GetPointAtDistance(distance, EndOfPathInstruction.Stop);
            // TODO: change to MovePosition()
            entities[i].transform.value.position = position;

            // Rotate
            // increase CPU perfomance by 150 %
            // TODO: try to optimize
            Vector3    direction = pathCreator.path.GetDirectionAtDistance(distance, EndOfPathInstruction.Stop);
            Quaternion rotation  = Quaternion.FromToRotation(Vector3.up, direction);
            entities[i].transform.value.rotation = rotation;
        }
    }
コード例 #3
0
    void Start()
    {
        menuMessage.text  = defaultMessage;
        particlesWinGame  = particlesWinGameGO.GetChild(0).GetComponent <ParticleSystem>();
        particlesLoseGame = particlesLoseGameGO.GetChild(0).GetComponent <ParticleSystem>();

        pathCreator            = GetComponent <PathCreator>();
        cameraFramer           = GetComponent <CameraFraming>();
        beController           = pathCreator.beController;
        beTargetObject         = BEController.beTargetObjectList[0];
        beTargetObjectRigdbody = beTargetObject.GetComponent <Rigidbody>();
        gameIsPlaying          = false;
        sandBoxBounds          = new Renderer[sandboxScene.transform.GetComponentsInChildren <BoxCollider>().Length];
        var i = 0;

        foreach (BoxCollider collider in sandboxScene.transform.GetComponentsInChildren <BoxCollider>())
        {
            sandBoxBounds[i] = collider.GetComponent <Renderer>();
            i++;
        }
    }
コード例 #4
0
    private void DestroyCarOnTileExit()
    {
        if (_currentPathToFollow != null)
        {
            _currentPathLength = _currentPathToFollow.path.length;
        }

        //if (_distanceTravelledOnCurrentPath < -.5f || _distanceTravelledOnCurrentPath > 46.5f)
        if (_distanceTravelledOnCurrentPath > _currentPathLength + .3f && _pathTimeGoesFrom0To1 || _distanceTravelledOnCurrentPath < -.3f && !_pathTimeGoesFrom0To1)
        {
            if (_destroyTriggered == false)
            {
                gameObject.transform.position = new Vector3(999, 999, 999);
                //setting the position of the car far away before destroying it triggers OnTriggerExit(), which is a solution to a bug causing cars to stop driving if they immediately drive behind a car which is getting destroyed
                CarSpawnerOrigin.DecreaseAmountOfCars();
                _currentPathToFollow = null;
                GameObject.Destroy(this.gameObject, .01f);
                _destroyTriggered = true;
            }
        }
    }
コード例 #5
0
    public override void SceneRightClick(Vector2 mousePos, PathCreator creator)
    {
        float minDstToAnchor     = PathCreator.anchorDiameter * .5f;
        int   closestAnchorIndex = -1;

        for (int i = 0; i < NumPoints; i += 3)
        {
            float dst = Vector2.Distance(mousePos, this[i]);
            if (dst < minDstToAnchor)
            {
                minDstToAnchor     = dst;
                closestAnchorIndex = i;
            }
        }

        if (closestAnchorIndex != -1)
        {
            Undo.RecordObject(creator, "Delete segment");
            DeleteSegment(closestAnchorIndex);
        }
    }
コード例 #6
0
    public void GenerateTube(bool file)
    {
        string name = "Tube";
        var    generated_tranform = transform.Find(name);

        if (generated_tranform != null)
        {
            DestroyImmediate(generated_tranform.gameObject);
            Debug.Log("destroyed");
        }
        tube = Create(name, gameObject);
        Debug.Log("create tube");

        PathCreator path_creator = gameObject.GetComponent <PathCreator>();

        if (path_creator != null)
        {
            VertexPath path = path_creator.path;

            /*if (file)
             * {
             *  BezierPath bp = path_creator.LoadPath();
             *  path = new VertexPath(bp, transform);
             * }
             * else
             * {
             *  path = path_creator.path;
             * }*/

            Debug.Log("got path");
            for (float distance = 0; distance < path.length; distance += 0.2f)
            {
                Vector3    position = path.GetPointAtDistance(distance, endOfPathInstruction);
                Vector3    upward   = path.GetDirectionAtDistance(distance, endOfPathInstruction);
                Vector3    forward  = path.GetNormalAtDistance(distance, endOfPathInstruction);
                Quaternion rotation = Quaternion.LookRotation(forward, upward);
                Instantiate(segment, position, rotation, tube.transform);
            }
        }
    }
        public override void OnEnter()
        {
            var go = Fsm.GetOwnerDefaultTarget(gameObject);

            CalculateMovementByPercent();
            _pathCreator = pathGameObject.Value.GetComponent <PathCreator>();

            // get total distance if path creator is not null
            if (_pathCreator == null)
            {
                return;
            }
            else
            {
                pathTotalDistance.Value = _pathCreator.path.length;
            }

            if (!everyFrame.Value)
            {
                Finish();
            }
        }
コード例 #8
0
        private void Awake()
        {
            rigid2d     = GetComponent <Rigidbody2D>();
            pathCreator = FindObjectOfType <PathCreator>();

            _tree = new BehaviorTreeBuilder(gameObject)
                    .Sequence()
                    .Condition("Is Racing", () => !RaceController.instance.raceOver)
                    .Condition("Not Player", () => !isPlayer)
                    .Condition("Stunned", () => !_stun)
                    .Selector()
                    .Sequence("Speed Boost")
                    //.Condition("Can Speed Boost", () => _canBoost)
                    .Condition("Not Boosted", () => !_speedBoosted)
                    .Do("Use Speed Boost", () =>
            {
                StopCoroutine(SpeedBoostLoop());
                StartCoroutine(SpeedBoostLoop());
                return(TaskStatus.Success);
            })
                    .End()
                    .Sequence("Move Forward")
                    .Do("Get or move next waypoint", () =>
            {
                float xMove = 0f;
                var hit     = Physics2D.CircleCast(rigid2d.position, spotRadius, transform.up, spotDistance, m_Obstacles);
                if (hit)
                {
                    dodgeStride = courseWidth < dodgeStride + xPos ? -dodgeStride : dodgeStride;
                    xMove       = dodgeStride;
                }
                MoveNext(xMove);
                return(TaskStatus.Success);
            })
                    .End()
                    .End()
                    .End()
                    .Build();
        }
コード例 #9
0
    public void Init(Vector3 start, Vector3 end, Vector3 startNormal, Vector3 endNormal, Transform obj, float speed)
    {
        Vector3[] waypoints = new Vector3[4];

        waypoints[0] = start;
        waypoints[1] = start + startNormal * 15.0f;
        waypoints[2] = end + endNormal * 15.0f;
        waypoints[3] = end;

        // Create a new bezier path from the waypoints.
        BezierPath  bezierPath = new BezierPath(waypoints, false, PathSpace.xyz);
        PathCreator creator    = GetComponent <PathCreator>();

        creator.bezierPath = bezierPath;
        Debug.Log(creator.bezierPath.AutoControlLength);
        path = creator.path;

        t = 0.0f;

        this.speed = speed;
        this.obj   = obj;
    }
コード例 #10
0
    public void CreateRequirementPath(Vector3 ownConnector, Vector3 requirementsPoints)
    {
        if (pathCreators == null)
        {
            pathCreators = new List <PathCreator>();
        }
        GameObject  go      = Instantiate(pathPrefab);
        PathCreator pathCre = go.GetComponent <PathCreator>();

        Vector3[] points = new Vector3[2];


        points[0]          = ownConnector;
        points[1]          = requirementsPoints;
        pathCre.bezierPath = new BezierPath(points, false, PathSpace.xy);
        pathCreators.Add(pathCre);
        int index = pathCreators.Count - 1;

        AssignMeshComponents(index);
        AssignMaterials();
        CreateMesh(pathCre.path);
    }
コード例 #11
0
ファイル: Note.cs プロジェクト: Nairu/GGJ2018
 private void Update()
 {
     if (posAlongPath <= 1)
     {
         posAlongPath      += Time.deltaTime;
         transform.position = PathCreator.PointOnLine(currentPath, posAlongPath, 1.5f, direction);
     }
     else
     {
         if (currentPath == ExitPath)
         {
             transform.position = new Vector2(100, 100);
             Destroy(gameObject);
         }
         else
         {
             direction    = PathCreator.Direction.Backward;
             posAlongPath = 0;
             currentPath  = ExitPath;
         }
     }
 }
コード例 #12
0
        public void CreatePathTest()
        {
            var creator = new PathCreator();
            var map     = new[, ]
            {
                { true, true, true },
                { true, true, true },
                { false, false, true },
                { true, true, true }
            };

            List <Point> path = creator.CreatePath(map, new Point(0, 0), new Point(1, 3));

            Assert.AreEqual(7, path.Count);
            Assert.AreEqual(new Point(0, 0), path[0]);
            Assert.AreEqual(new Point(0, 1), path[1]);
            Assert.AreEqual(new Point(1, 1), path[2]);
            Assert.AreEqual(new Point(2, 1), path[3]);
            Assert.AreEqual(new Point(2, 2), path[4]);
            Assert.AreEqual(new Point(2, 3), path[5]);
            Assert.AreEqual(new Point(1, 3), path[6]);
        }
コード例 #13
0
    private void OnTriggerEnter(Collider other)
    {
        if (other.transform.CompareTag("Road"))
        {
            _pathController       = other.transform.parent.GetComponentInChildren <PathController>();
            _currentPathToFollow  = GetRandomPath(transform.position);
            _pathTimeGoesFrom0To1 = PathGoesFrom0To1(_currentPathToFollow);
            _distanceTravelledOnCurrentPathIsSet = false;
            _rotationIsBasedOnRotationPoint      = false;

            CurrentTile = other.GetComponentInParent <Tile>();
            if (CurrentTile.Type == Tile.TileType.Intersection || CurrentTile.Type == Tile.TileType.T_Junction)
            {
                _carBehaviour.AllowPriorityAwareness(true);
            }
            else
            {
                _carBehaviour.AllowPriorityAwareness(false);
            }

            //Debug.Log("ENTER:" + _currentPathToFollow.transform.root.name);
        }
    }
コード例 #14
0
        void OnEnable()
        {
            bool in2DEditorMode = EditorSettings.defaultBehaviorMode == EditorBehaviorMode.Mode2D;

            if (creator == null)
            {
                creator               = GetComponent <PathCreator>();
                handlePrefab          = (GameObject)Resources.Load <GameObject>("Prefabs/Knob");
                bezierPathLr          = gameObject.AddComponent <LineRenderer>() as LineRenderer;
                bezierPathLr.material = (Material)Resources.Load <Material>("Material/MovementPathMaterial");
            }
            creator.InitializeEditorData(in2DEditorMode);

            data.bezierCreated     -= ResetState;
            data.bezierCreated     += ResetState;
            Undo.undoRedoPerformed -= OnUndoRedo;
            Undo.undoRedoPerformed += OnUndoRedo;

            LoadDisplaySettings();
            UpdateGlobalDisplaySettings();
            ResetState();
            SetTransformState(true);
        }
コード例 #15
0
    void Start()
    {
        AudioManagerGO = GameObject.FindGameObjectWithTag("AudioManager");
        audioManager   = AudioManagerGO.GetComponent <AudioManager>();

        if (pathCreator == null)
        {
            pathCreator = PathManager.Instance.FindPathInt(Random.Range(0, (int)PathManager.PathArrayContainer.PathGroup.NUM_OF_VALUES), Random.Range(0, (int)PathManager.PathArray.Direction.NUM_OF_VALUES));
        }

        if (WaypointContainer != null)
        {
            ReadWaypoint();
        }

        distanceTravelled = 0f;

        // Subscribed to the pathUpdated event so that we're notified if the path changes during the game
        pathCreator.pathUpdated += OnPathChanged;
        transform.position       = new Vector3(0, 4 + 0.5f, 0);
        stopping = false;
        slowDown = false;
    }
コード例 #16
0
ファイル: TrackController.cs プロジェクト: nitelite/TG2020-AI
    private void generateCheckpoints()
    {
        GameObject  startpoint = Resources.Load <GameObject>("Startpoint");
        GameObject  checkpoint = Resources.Load <GameObject>("Checkpoint");
        PathCreator pc         = GetComponent <PathCreator>();

        if (checkpointHolder == null)
        {
            GameObject obj = new GameObject();
            obj.name         = "Checkpoints";
            checkpointHolder = obj;
        }

        VertexPath path = pc.path;

        numCheckpoints = Mathf.Clamp((int)path.length / 10, 4, 10);
        float spacing = path.length / numCheckpoints;
        float dst     = 0;


        dst += spacing;

        while (dst < path.length)
        {
            Vector3    point = path.GetPointAtDistance(dst);
            Quaternion rot   = path.GetRotationAtDistance(dst) * Quaternion.Euler(90, 0, 90);
            Instantiate(checkpoint, point, rot, checkpointHolder.transform);
            dst += spacing;
        }

        // Startpoint:
        // Add the startpoint last since its the last checkpoint technically
        Vector3    point_start = path.GetPointAtDistance(0);
        Quaternion rot_start   = path.GetRotationAtDistance(0) * Quaternion.Euler(90, 0, 90);

        Instantiate(startpoint, point_start, rot_start, checkpointHolder.transform);
    }
コード例 #17
0
    public void CreateFish(int id, int startY, PathCreator path, bool allowAutoDespawn)
    {
        bool  reversed = Random.value >= 0.5;
        float startX   = Random.Range(-250, -550);

        //print("Spawning fish with ID: " + id);
        GameObject fish = Instantiate(fishPrefab, new Vector3(0, 0, 0), Quaternion.identity);

        // fish.transform.SetParent(submarineCanvas.transform);
        myFish.Add(fish);

        if (allowAutoDespawn)
        {
            idleFish.Add(fish);
        }

        FishAI fai = fish.GetComponent <FishAI>();

        fai.id                  = id;
        fai.myManager           = this;
        fai.gameState           = gameState;
        fai.startDepth          = gameState.CurrentDepth;
        fai.worldX              = startX;
        fai.worldY              = startY;
        fai.myPath              = path;
        fai.endOfPathBehaviour  = EndOfPathInstruction.Loop;
        fai.myBillBoard.target  = playerCamera.transform;
        fai.dstTravelled        = Random.Range(0f, 100f);
        fai.applyJitterToSpwawn = applyJitterToSpwawn;
        fai.allowAutoDespawn    = allowAutoDespawn;

        if (reversed)
        {
            fai.reverseDirection     = true;
            fai.transform.localScale = new Vector3(fai.transform.localScale.x * -1, fai.transform.localScale.y, fai.transform.localScale.z);
        }
    }
コード例 #18
0
    private List <GameObject> referenceList; //Logikken (min) bak dette:
    //referenceList lager jeg fordi at jeg ønsker å bruke de spesefike instansene av Gameobjects som lages i InitialiazeCreeps() senere.
    //Dette er nødvendig fordi "creepList" inneholder kun "prefabs" ikke FAKTISKE GAMEOBJETS. Så det vil ikke hjelpe å "sette dem til active(true)"
    //senere med en "foreach loop", fordi det setter bare "prefabene" (som ikke har blitt spawnet uansett) til true.
    public void InitializeCreeps(PathCreator path)
    {
        numberOfCreepsToSpawn = 0; //Remember you always need to reset these numbers when you work with SOs
        numberOfCreepsSpawned = 0;

        referenceList = new List <GameObject>();

        WaveContainer = new GameObject($"Wave Container for wave: " + groupName);

        foreach (GameObject creep in actualCreepList)
        {
            GameObject newInstance = Instantiate(creep);

            newInstance.transform.SetParent(WaveContainer.transform);

            newInstance.SetActive(false);

            Creep stats = newInstance.GetComponent <Creep>();
            stats.SetPath(path);

            referenceList.Add(newInstance); //Add this newly created instance of a prefab into a list that can be referenced later
            numberOfCreepsToSpawn += 1;
        }
    }
コード例 #19
0
    public void Init(Vector3 start, Vector3 end, Transform obj, float speed)
    {
        Vector3[] waypoints = new Vector3[4];

        Vector3 direction = end - start;
        float   distance  = direction.magnitude;

        waypoints[0] = start;
        waypoints[1] = start + direction * 0.2f + generateRandomVector() * distance * 0.1f;
        waypoints[2] = start + direction * 0.8f + generateRandomVector() * distance * 0.1f;
        waypoints[3] = end;

        // Create a new bezier path from the waypoints.
        BezierPath  bezierPath = new BezierPath(waypoints, false, PathSpace.xyz);
        PathCreator creator    = GetComponent <PathCreator>();

        creator.bezierPath = bezierPath;
        path = creator.path;

        t = 0.0f;

        this.speed = speed;
        this.obj   = obj;
    }
コード例 #20
0
        void OnEnable()
        {
            creator = (PathCreator)target;

            // Ensure we have an EditorState object for this creator instance
            if (editorStateMap.TryGetValue(creator, out editorState) == false)
            {
                editorState = editorStateMap[creator] = new EditorState();
            }

            bool in2DEditorMode = EditorSettings.defaultBehaviorMode == EditorBehaviorMode.Mode2D;

            creator.InitializeEditorData(in2DEditorMode);

            data.bezierCreated     -= ResetState;
            data.bezierCreated     += ResetState;
            Undo.undoRedoPerformed -= OnUndoRedo;
            Undo.undoRedoPerformed += OnUndoRedo;

            LoadDisplaySettings();
            UpdateGlobalDisplaySettings();
            ResetState();
            SetTransformState(true);
        }
コード例 #21
0
    private static ClosestPoint CalculateClosestPoint(PathCreator pathCreator, EndOfPathInstruction endOfPath, Vector3 targetPosition)
    {
        var stepScale = pathCreator.path.length % 10;

        stepScale = Mathf.Clamp(stepScale, 1, 500f);
        var          pathStep     = pathCreator.path.length / stepScale;
        ClosestPoint closestPoint = new ClosestPoint(Vector3.zero, -1, 0);

        for (int i = 0; i < stepScale; i++)
        {
            var travelledDistance = pathStep * i;

            var pathPoint      = pathCreator.path.GetPointAtDistance(travelledDistance, endOfPath);
            var vectorToTarget = targetPosition - pathPoint;
            vectorToTarget.y = 0;

            var distanceToTarget = vectorToTarget.magnitude;
            if (distanceToTarget < closestPoint.DistanceToTarget || closestPoint.DistanceToTarget == -1)
            {
                closestPoint = new ClosestPoint(vectorToTarget, distanceToTarget, travelledDistance);
            }
        }
        return(closestPoint);
    }
コード例 #22
0
ファイル: PathFinder.cs プロジェクト: MOSOVSKY/Traffic
    void OnTriggerStay(Collider other)
    {
        if (other.tag == "path")
        {
            pathcreateor = other.transform.parent.GetComponent <PathCreator>();

            if (pathcreateor && thisCar.path1 == null) //jezeli jest jaki wykryty pathcreator a miejsce 1 jest puste
            {
                thisCar.path1 = pathcreateor;
                //Debug.Log("do 1 :"+pathcreateor.name);
                //pierwsza sciezka-kolizja ze sciezka- to ta po ktorej pierwszej pojedzie auto( do startu )
                if (justStarted == false)
                {
                    Debug.Log("juststarded");
                    thisCar.TakeFirstPath();
                    justStarted = true;
                }
                return;
            }
            else if (pathcreateor != thisCar.path1 && thisCar.path2 == null) //jezeli jest jaki wykryty pathcreator inny niz w path1 2
            {
                thisCar.path2 = pathcreateor;
                //Debug.Log("do 2 :" + pathcreateor.name);
                return;
            }
            else if (pathcreateor != thisCar.path2 && pathcreateor != thisCar.path1 && thisCar.path3 == null) //jezeli jest jaki wykryty pathcreator  inny niz w path2 i path1
            {
                thisCar.path3 = pathcreateor;
                //Debug.Log("do 3 :" + pathcreateor.name);
                return;
            }

            //Debug.Log(other.transform.parent.parent.name);
            //Debug.Log(pathcreateor.name);
        }
    }
コード例 #23
0
    void Spawn()
    {
        if (current_num >= num_toSpawn)
        {
            //used to stop spawning?
            CancelInvoke("Spawn");
            Debug.Log("Cancel invoke");
        }
        else
        {
            //randomly choose a path starting from the same point
            int         path_number = Random.Range(0, path_list.Length);
            PathCreator path_chosen = path_list[path_number];
            //Instantiate an agent at the start point
            Vector3    init_position = path_chosen.path.GetPoint(0);
            Quaternion init_rotation = path_chosen.path.GetRotation(0f);
            GameObject agent         = Instantiate(spawned_agent, init_position, init_rotation);
            //Attach the agent to the path
            agent.GetComponent <PathFollower>().pathCreator = path_chosen;
            current_num++;

            if (current_num == num_toSpawn)
            {
                //Debug.Log("Current num = to spawn num");
                //Debug.Log(current_wave + 1 + " " + waves.Count);
                CancelInvoke("Spawn");
                if (current_wave + 1 <= waves.Count - 1)
                {
                    //Debug.Log("!?");
                    current_wave++;
                    LoadWaveData(current_wave);
                    InvokeRepeating("Spawn", time_wait, time_interval);
                }
            }
        }
    }
コード例 #24
0
 void Start()
 {
     creator = GetComponent <PathCreator>();
     path    = creator.path;
     GenerateStem();
 }
コード例 #25
0
 // Start is called before the first frame update
 void Awake()
 {
     Debug.Log("BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBs");
     path_creator = GetComponent <PathCreator>();
 }
コード例 #26
0
ファイル: EditPathView.cs プロジェクト: kicholen/SpaceShooter
 void attachScripts()
 {
     go.AddComponent<EditorGrid>();
     go.AddComponent<CameraController>();
     pathCreatorScript = go.AddComponent<PathCreator>();
 }
コード例 #27
0
 public MapGenerator(PathCreator pathCreator)
 {
     _pathCreator = pathCreator;
 }
コード例 #28
0
 public abstract void SceneRightClick(Vector2 mousePos, PathCreator creator);
コード例 #29
0
    void create_road(int _stage)
    {
        road_poins.Clear();



        road_poins.Add(new Vector3(0, 0, 0));
        road_poins.Add(new Vector3(5, 0, 0));
        road_poins.Add(new Vector3(10, 0, 0));


        if (stage == 1)
        {
            current_stage_txt.text = stage.ToString();
            next_stage_txt.text    = (stage + 1).ToString();
            stage_slider.minValue  = 0;
            stage_slider.maxValue  = 220;

            //first road
            Debug.Log("we are creating the road");
            current_road = Instantiate(road);
            current_road.transform.position = new Vector3(0, 0, 0);
            pth = current_road.GetComponent <PathCreator>();
            roads.Add(current_road);

            road_poins.Add(new Vector3(15, 0, 0));
            road_poins.Add(new Vector3(20, 0, 0));
            road_poins.Add(new Vector3(35, 5, 0));
            road_poins.Add(new Vector3(50, -3, 0));
            road_poins.Add(new Vector3(65, 10, 0));
            road_poins.Add(new Vector3(80, 5, 0));

            BPath = new BezierPath(road_poins, false, PathSpace.xyz);
            BPath.GlobalNormalsAngle = 90;
            pth.bezierPath           = BPath;

            //second road
            current_road = Instantiate(road);
            current_road.transform.position = new Vector3(0, 0, 0);
            pth = current_road.GetComponent <PathCreator>();
            roads.Add(current_road);

            road_poins.Clear();

            road_poins.Add(new Vector3(85, 0, 0));
            road_poins.Add(new Vector3(100, 0, 0));
            road_poins.Add(new Vector3(115, 5, 0));
            road_poins.Add(new Vector3(130, -5, 0));
            road_poins.Add(new Vector3(145, 10, 0));
            road_poins.Add(new Vector3(160, 0, 0));
            road_poins.Add(new Vector3(220, 0, 0));
            BPath = new BezierPath(road_poins, false, PathSpace.xyz);
            BPath.GlobalNormalsAngle = 90;
            pth.bezierPath           = BPath;

            GameObject obj = Instantiate(chest);
            obj.transform.position = new Vector3(220, 1, 0);
        }
        create_traps();
        //BPath.AddSegmentToEnd(new Vector3(5,5,5));
    }
コード例 #30
0
 public abstract void Draw(PathCreator creator);
コード例 #31
0
 public void UsePath(PathCreator pathCreator)
 {
     this.pathCreator = pathCreator;
 }