Forum begins after the advertisement:


[Part 2] Map Generation

Viewing 20 posts - 1 through 20 (of 21 total)
  • Author
    Posts
  • #12244
    sad agent
    Level 10
    Former Patron
    Helpful?
    Up
    0
    ::

    Hello, im on part 2 25:20 and i did everything at map controller script improvement, but there is no more map loading anymore now. I have just the first one to appear, then no others are spawning as im moving.

    ChunkTrigger script:

    
    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class ChunkTrigger : MonoBehaviour
    {
        MapController mc;
        public GameObject targetMap;
        void Start()
        {
            mc = FindObjectOfType<MapController>();
    
        }
    
        private void OnTriggerStay2D(Collider2D col)
        {
            if(col.CompareTag("Player"))
                {
                    mc.currentChunk = targetMap;
                }
    
        }
    
        private void OnTriggerExit2D(Collider2D col)
        {
            if(col.CompareTag("Player"))
                {
                    if(mc.currentChunk == targetMap)
                      {
                        mc.currentChunk = null;
                      }
    
                }
    
        }
    }

    Map Controller script:

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class MapController : MonoBehaviour
    {
        public List<GameObject> terrainChunks;
        public GameObject player;
        public float checkerRadius;
        Vector3 noTerrainPosition;
        public LayerMask terrainMask;
        public GameObject currentChunk;
        PlayerMovement pm;
    
        void Start()
        {
            pm = FindObjectOfType<PlayerMovement>();
        }
    
        void Update()
        {
            ChunkChecker();
        }
    
        void ChunkChecker()
        {
            if(!currentChunk)    
            {
                return;
            }
    
    
            if(pm.moveDir.x > 0 && pm.moveDir.y == 0) //vpravo
                {
                    if(!Physics2D.OverlapCircle(currentChunk.transform.Find("Right").position, checkerRadius, terrainMask))
                        {
                            noTerrainPosition = currentChunk.transform.Find("Right").position;
                            SpawnChunk();
    
                        }
                }
    
            else if(pm.moveDir.x < 0 && pm.moveDir.y == 0) //vlavo
                {
                    if(!Physics2D.OverlapCircle(currentChunk.transform.Find("Left").position, checkerRadius, terrainMask))
                        {
                            noTerrainPosition = currentChunk.transform.Find("Left").position;
                            SpawnChunk();
    
                        }
    
                }
    
            else if(pm.moveDir.x == 0 && pm.moveDir.y > 0) //hore
                {
                    if(!Physics2D.OverlapCircle(currentChunk.transform.Find("Up").position, checkerRadius, terrainMask))
                        {
                            noTerrainPosition = currentChunk.transform.Find("Up").position;
                            SpawnChunk();
    
                        }
    
                }           
            else if(pm.moveDir.x == 0 && pm.moveDir.y < 0) //dole
                {
                    if(!Physics2D.OverlapCircle(currentChunk.transform.Find("Down").position, checkerRadius, terrainMask))
                        {
                            noTerrainPosition = currentChunk.transform.Find("Down").position;
                            SpawnChunk();
    
                        }
    
                }
    
            else if(pm.moveDir.x > 0 && pm.moveDir.y > 0) //vpravo hore
                {
                    if(!Physics2D.OverlapCircle(currentChunk.transform.Find("Right Up").position, checkerRadius, terrainMask))
                        {
                            noTerrainPosition = currentChunk.transform.Find("Right Up").position;
                            SpawnChunk();
    
                        }
    
                }
    
            else if(pm.moveDir.x > 0 && pm.moveDir.y < 0) //vpravo dole
                {
                    if(!Physics2D.OverlapCircle(currentChunk.transform.Find("Right Down").position, checkerRadius, terrainMask))
                        {
                            noTerrainPosition = currentChunk.transform.Find("Right Down").position;
                            SpawnChunk();
    
                        }
    
                }
    
            else if(pm.moveDir.x < 0 && pm.moveDir.y > 0) //vlavo hore
                {
                    if(!Physics2D.OverlapCircle(currentChunk.transform.Find("Left Up").position, checkerRadius, terrainMask))
                        {
                            noTerrainPosition = currentChunk.transform.Find("Left Up").position;
                            SpawnChunk();
    
                        }
    
                }
    
            else if(pm.moveDir.x < 0 && pm.moveDir.y < 0) //vlavo dole
                {
                    if(!Physics2D.OverlapCircle(currentChunk.transform.Find("Left Down").position, checkerRadius, terrainMask))
                        {
                            noTerrainPosition = currentChunk.transform.Find("Left Down").position;
                            SpawnChunk();
    
                        }
    
                }
    
    
    
        }
    
        void SpawnChunk()
        {
            int rand = Random.Range(0, terrainChunks.Count);
            Instantiate(terrainChunks[rand], noTerrainPosition, Quaternion.identity);
    
        }
    
    }
    #12245
    sad agent
    Level 10
    Former Patron
    Helpful?
    Up
    0
    ::
    pls help
    #12248
    Terence
    Level 31
    Keymaster
    Helpful?
    Up
    0
    ::

    Hi sad agent, did you miss out assigning any properties on the MapController? You will need to assign the appropriate Terrain Mask, and make sure that the Checker Radius is larger than 0.

    #12250
    sad agent
    Level 10
    Former Patron
    Helpful?
    Up
    0
    ::

    I think they are filled up correcty, and other ideas?

    View post on imgur.com
    #12252
    Terence
    Level 31
    Keymaster
    Helpful?
    Up
    0
    ::

    Try putting a Debug.Log() statement on each of the collision checks on MapController. Here’s an example:

    if(pm.moveDir.x > 0 && pm.moveDir.y == 0) //vpravo
    {
        if(!Physics2D.OverlapCircle(currentChunk.transform.Find("Right").position, checkerRadius, terrainMask))
        {
            Debug.Log("MapController right collision");
            noTerrainPosition = currentChunk.transform.Find("Right").position;
            SpawnChunk();
    
        }
    }

    See if the messages print.

    #12265
    sad agent
    Level 10
    Former Patron
    Helpful?
    Up
    0
    ::

    Where should this message print? Nothing happened when I added this.

    #12266
    sad agent
    Level 10
    Former Patron
    Helpful?
    Up
    0
    ::

    If you mean this console, then there is nothing here

    View post on imgur.com
    #12267
    Terence
    Level 31
    Keymaster
    Helpful?
    Up
    0
    ::

    If nothing happens, it means that either of the 2 lines below are the issue:

    if(pm.moveDir.x > 0 && pm.moveDir.y == 0) //vpravo
    {
        if(!Physics2D.OverlapCircle(currentChunk.transform.Find("Right").position, checkerRadius, terrainMask))
        {
            Debug.Log("MapController right collision");
            noTerrainPosition = currentChunk.transform.Find("Right").position;
            SpawnChunk();
    
        }
    }

    I suspect it is the 2nd highlighted line. Check if your chunk Prefabs have children GameObjects named “Right”, “Left”, “Up”, “Down” etc. The generator finds these objects and uses them to determine when a new chunk should generate.

    #12268
    sad agent
    Level 10
    Former Patron
    Helpful?
    Up
    0
    ::

    it stopped working when i changed cords for currentChunk.transform.Find("Right").position in if(!Physics2D.OverlapCircle(currentChunk.transform.Find("Right").position, checkerRadius, terrainMask))

    #12269
    Terence
    Level 31
    Keymaster
    Helpful?
    Up
    0
    ::

    What do you mean? Where did you change the coords? In the inspector?

    #12271
    sad agent
    Level 10
    Former Patron
    Helpful?
    Up
    0
    ::

    No you were supposed to put actual cords in the code before instead of currentChunk.transform.Find("Right").position etc

    #12272
    sad agent
    Level 10
    Former Patron
    Helpful?
    Up
    0
    ::

    its like new vector3(20, 20, 0) etc

    #12273
    Josh
    Level 22
    Silver Supporter (Patron)
    Helpful?
    Up
    0
    ::

    I had the same issue, but I figured out what my problem was.

    Check that your static coordinates (“Up”, “Right”, etc) are placed properly. In my case, my chunks are 84×84, and so I had them placed right at the edges (so “Right” was at (42, 0) and “Left” was at (-42, 0)) but I had to put them at the total length (“Right” = (84, 0), “Left” = (-84, 0)).

    I hope this makes sense and is helpful!

    #12279
    sad agent
    Level 10
    Former Patron
    Helpful?
    Up
    0
    ::

    I am pretty sure I got it correctly, all the gunks are 20×20 pixels, imporing photo of “Right” static point. https://imgur.com/a/Es2et1r

    #12281
    Terence
    Level 31
    Keymaster
    Helpful?
    Up
    0
    ::

    If I’m not wrong, your “Right” has to be right at the edge of your chunk. It’s too far away.

    #12283
    sad agent
    Level 10
    Former Patron
    Helpful?
    Up
    0
    ::

    I changed it to be on the edge, but it is not working still :(

    View post on imgur.com

    I need to fix it, it is supposed to be my school project

    #12284
    sad agent
    Level 10
    Former Patron
    Helpful?
    Up
    0
    ::

    Terence, could it maybe be possible for you to send me whole thing(i mean the whole game coded and placed where it is supposed to be in unity, as unity document) so I get pass my school exams? im desperate atm :(

    #12286
    Terence
    Level 31
    Keymaster
    Helpful?
    Up
    0
    ::

    You can download the project files of Parts 1 to 4 for free here: https://blog.terresquall.com/series/creating-a-rogue-like-vampire-survivors/

    Click on the blue download button and you will be brought to the Patreon post with the project files.

    #12289
    sad agent
    Level 10
    Former Patron
    Helpful?
    Up
    0
    ::

    So there is no unity file there? or how can I open it in unity file from this if possible:

    View post on imgur.com
    #12290
    sad agent
    Level 10
    Former Patron
    Helpful?
    Up
    0
    ::

    because I dont have nothing in hierarchy

    View post on imgur.com
Viewing 20 posts - 1 through 20 (of 21 total)
  • You must be logged in to reply to this topic.

Go to Login Page →


Advertisement below: