I’m really glad you’re making a series on this to help teach but I’ve stumbled into a problem: When altering the boxcollider for my sprite, there wireframe is not visible and I cannot tell where it is. How come yours is visible?
The enemy spawning system should be done within the next 1 or 2 parts, which should be out around mid July at the latest. There is still a lot of content we can cover for this series still though, such as a Buff / Debuff System, Pickup Effects, Multiplayer, Pre-game Stat Boosts. If we cover all of these, it should take us another 10+ episodes and about a year or 2 to do all of them.
The problem I got is when I stop the game I will get a gem on the map and an Error in Unity Some objects were not cleaned up when closing the scene. (Did you spawn new GameObjects from OnDestroy?) The following scene GameObjects were found: Blue Gem(Clone) And the resolve was private bool isQuitting = false; private void OnApplicationQuit() { isQuitting = true; } if (isQuitting) return;
Yes, it works if a portion of the screen is under water. I'm not sure what you mean by the water not being plain. But if you have objects in the water, it should still work as well.
I have two cameras. One follows the player on both the x and y axes, while the other only follows on the x axis. When transitioning from the camera that follows on both axes to the one that follows only on the x axis, the camera first moves downwards but then moves upwards. What could be the reason?
Hi al, I'll need you to post a video of this happening on the forums, as well as the relevant scripts for controlling the cameras. The forums are here: blog.terresquall.com/community/forum/video-game-tutorials/metroidvania/
We went with the binary file route in this series, so serialisation works, but for JSON, JSONUtility doesn't support dictionaries out of the box, so you will either need to switch to JSON.Net or write a function that manually handles dictionaries. You can refer to this question on StackOverflow: stackoverflow.com/questions/61046484/unity3d-how-to-store-dictionary-as-object-in-json
So I've finished the map controller script and I was going to move on to Static Points, but I found an issue. The Console keeps telling me that "the variable propSpawnPoints of propRandomizer has not been assigned. If that was the case, the script wouldn't have worked in the first place and props wouldn't have spawned, right? I rechecked the script multiple times and I couldn't find the issue that Unity's warning me about. edit: Never mind. To make the Terrain Chunk prefabs more diverse, I deleted some of the objects in them, but forgot to clear Prop Spawn Points from the empty arrays.
The reference to PlayerStats at 11:46 could be gotten using GetComponentInParent<PlayerStats>() instead which should be way faster than FindObjectOfType(). Doesn't matter all that much in this case but still worth to mention the alternative
Hello, will I be able to do this fix if my code is still at part 9? If so, how would I go about that since I dont have that actualstats part? I noticed the problem shortly after implementing the magnet and I´d like to fix it earlier before going through the other videos
You should be able to follow about 80% of it. For the PlayerStats part, you can just tentatively call SetRadius() on the Awake() function. If you have any further questions, you can create a topic on our forums. It is easier for us to share code over there: blog.terresquall.com/community
wow this tutorial this cool. finally i found tutorial harvest moon. But in my game i'm very confused about long timeline gameplay and narrative story like harvest moon
@@terresquall Well, you could say that. Pouring the storyline day by day, and the weather too. Is there a way to structure the story? I'm always looking for someone to develop a game and have a storyline in it. But I didn't find it. Are my words understandable?
Yup, we are working towards that in the series. What we're focusing on now is creating a system that is able to trigger story events based when conditions are met.
Hey, your videos are so great!! But i've got 2 problems: 1. When I change from "Cast" and "Heal" button to "Cast/Heal" button. Player always cast spell after healing 2. The "sideSpellFireball" cannot cause damage while the other spells can How can I fix it? Thanks a lot
For 1. do you mean you have the same button for both actions? For 2, make sure that the appropriate tag is on your spell prefab, as well as Colliders and a Rigidbody.
Good Evening TerreSquall, I am having an issue with it spawning the actual tiles. I have finished the part of the video called Map Controller Script Improvements, I am having the issue where it just isn't spawning another Chunk at all. I have checked the code and am not seeing anything wrong, It also looks like I haven't strayed from doing anything wrong in the editor Additionally I have an issue where the TileMap is over the player even when I change the layers Do you have any guidance I can try tomorrow after work? To be more specific it just doesn't spawn the other chunks and when I walk off the begining chunk I get hit with "NullReferenceException: Object reference not set to an instance of an object MapController.ChunkChecker () (at Assets/Scripts/MapController.cs:44) MapController.Update () (at Assets/Scripts/MapController.cs:24)"
I'd like to see on next videos maybe something about adding background music, sound effects to the weapons, enemies, etc. It'll be a nice add to the project.
Very good video! Just solved all the issues that I had with the inventory manager. The game is running incredible polished now. The unique issue that I still see is that sometimes the chunks are drawn with some strange lines between them. I added to my project, at the menu screen an area to display the character icon, name and a description with the background history for each character. Also added different sprites for each character and added an idle animation for them. I already created a "currency" on it also, so later I'll make some characters disabled by default and will have the option to spent this in-game "currency" to enable them.
Hi HoangNguyen, could you check if you have any console error messages? and try adding print()/debug() functions to check if your "Hit()" method is functioning and giving your player mana. It could also be that the mana value in your player is being added but the mana UI is not reflecting it. In either case, I would encourage that you post your issue on our forum page here: blog.terresquall.com/community/forum/video-game-tutorials/metroidvania/ Posting your issue there will allow you to send us pictures and your code so that we may better understand the issue if the above suggestions do not work.
I have such a problem: the character falls through periodically falls through the floor, sometimes goes into the walls, this happens even with normal movement. How can I fix this?
Hi Alex, this may likely be due to your Physics system timestep not being fast enough. Simply change your RigidBody2D's Collision Detection to "Continuous" and Interpolate to "Interpolate" and it should prevent most clipping issues. Next, If you are using code like "transform.Translate() or rigidbody.MovePosition()", you should change them to "Rigidbody.velocity()" since interpolation nor collision detection can guarantee to catch up with the speed of the position change. Then in your Project Settings, in "Time", change your "Fixed Timestep" value to something that is reasonable like "0.02". If your problem persists, you can post your issue on our forum to add images or your code to assist us with finding the core problem: blog.terresquall.com/community/forum/video-game-tutorials/metroidvania/
@@alex25loks we've got an article explaining collision detection modes in more detail if youre interested: blog.terresquall.com/2019/12/collision-detection-modes-in-unitys-rigidbody-component/
The mana and health of my Save&LoadPlayerData did not take effect, but the position did. I used Debug.Log to actually save and read. But nothing happens except the location . In addition, when my player is injured, as long as he presses Cast/Heal, the Heal action will be repeated endlessly. I do not know what to do
Hi mini, sorry for missing your comment. If you haven't already, can you repost this on our forums with a video or GIF of the issue occurring? blog.terresquall.com/community/forum/video-game-tutorials/metroidvania/
Tried to understand what is wrong with my Axe weapon implementation but did not found what is wrong. When it's fired it only move up, it does not generated the arc movement and goes down. Double checked the video, gravity scale was correctly set to 1, but looks like the gravity is not being appied. Any suggestion?
@@terresquall woww, really thanks! It was exactly that! Now it works fine! Thanks for sharing all this knowledge! I just completed all the videos in the series. I added to my code the ability for the aura based weapons to destroy breakable props. This was missing at the video system.
This is quite a tricky issue. Can you check out this topic and see if any of the questions there solve your issue? blog.terresquall.com/community/topic/notable-map-generation-errors/#manual-login Otherwise, I will need you to take a video and post it on the forums.
Hello, great tutorial I am in min 11, I noticed 2 things, if you are on the edge, the player will not be able to jump since the raycast is not showing detect, second issue, is if you jump and land on the edge, even when I have constraint on the Z my character flips and falls forever. ( somtimes it doesn't flip but keeps going down )
Hi Sven, for the jump at the edge, You should try increasing the GroundCheckX or Y variables. Being able to jump is reliant on the fact that you are "Grounded()", so your GroundCheck needs to be just about the same size as your Player's BoxCollider2D. You can test this out by reducing your player speed and walking as far as you can on the edge without falling. and checking if your player is still considered Grounded. As for the player rotation issue. That should be able to be solved by setting the RigidBody2D's Z constraint to true, but if it doesn't I would encourage you post a video or image of your inspector or player script onto our forrum: blog.terresquall.com/community/forum/video-game-tutorials/metroidvania/
Thank you! Love the series. I have a question, what if I want it to just auto collect the items if the player is near them instead of having to click? Do you cover this in later tutorials? (For like dropped items, I like the clicking for harvesting)
Hi troublesum, you can do that by adding an autocollect boolean in InteractableObject. Then in the PlayerInteraction OnInteractableHit, call the Pickup function if autocollect is true. You can the code here: blog.terresquall.com/community/topic/part-7-autocollect-items/
Your lessons are really very cool, but I would like future videos to be slower and everything to be understood in a little more detail. It will be better if the video is twice as long, even without acceleration, or you can split one video into two.
omg you are a life saver had an awful bug where if you jump into the edge of an tilemap you clip into it, it is now way less amplified thank you soooo much
It might have been missed out. There is a topic dedicated to missing parts on the forums (check out the Part 6 post by Joseph): blog.terresquall.com/community/forum/video-game-tutorials/metroidvania/ Hope it helps!
Hi Alex, for the stunDuration variable, i presume you are talking about [13:03] where we create the "Bat_Stunned" state. There appears to be a small jumpcut during this segment where the creator made the variable without having shown it. However, it is said to create a "[SerializableField] private float stunDuration". If you create the variable, which you can place below the "chaseDistance" variable in Bat.cs, the code should be fine. - Joseph
I'm glad you like this series GuAgOn! If you run into any issues in our video, we've got a forum documenting bugs / gaps in our videos as well. Do check it out: blog.terresquall.com/community/forum/video-game-tutorials/metroidvania/