#UnityEngine
Explore tagged Tumblr posts
Text
68 notes
·
View notes
Text
It's so... uh... dystopian to be hear the friendly Nintendo Direct announcer through the lens of the Unity debacle :P

We're making it guys, we are in the future we've been toying with in fiction.
35 notes
·
View notes
Text
"Run."
Rendered in Unity with the HDRP pipeline Models made by me Background belongs to unity in the HDRP tutorial +earlier version I kind of like
25 notes
·
View notes
Video
youtube
5 #unity TIPS you SHOULD KNOW #unity3d #gamedev
#youtube#unity#unity3d#unity2d#unityengine#unity engine#gamedev#inidiegamedev#indiegame#inidiegames#madewithunity#unitytips#unitytricks#unitytutorial#gamedeveloper#game developers#unityvsgodot#indiedev#unity2024#unitytipsandtricks#solodev
3 notes
·
View notes
Text
On this stormy night, you find shelter, but at what cost? Your time to see my portfolio piece and admire the stormy nature of my project, yay!! In this project, I made a simple and short level design project of the player navigating through a tiny forest on a stormy night who will then find a mysterious cabin to stay in.
This project was designed not to be the next game on the market, but to flex my level design skills with particles, and for the first time to use Tree Creator and wind zone to create trees and wind respectfully. The assets (including the fps controller and one of the trees) are mostly borrowed from the Unity asset store, except for the trees I created (which will be shown one by one later in the video).
WHAT I LEARNED:
· How effectively I can use the Tree Creator to create main roots, growth, leaf frequency and growth, textures, branches, LOD, how effective are they in the wind, size (including leaves), and crankiness of branches of trees
· About how to use the wind zone for the first time and how effective and complex it is to use to enable to blow the trees around like the real-life wind.
· How I can make small particles float around until they reset their starting position to play the particle again.
· How I can shape particles. E.g. the dust flying around and the rain particles falling respectfully.
· Rotating around skyboxes to fit in with the scenes better. · Using code to make a randomized range with an enumerator to flick the lightning (directional light) between 15- 20 seconds.
· How effective using flare lights can be used to get players' attention from a distance,
WHAT I IMPROVED:
· I improved on mixing different terrain textures with each other to make it seamless and blended together as possible.
· I managed to control how high and low the terrain is to distinguish which are hills/mountains and walkable areas.
· Getting a better hang with the lighting and post-fx respectfully.
· Snapping modular pieces such as planks and steel roofs to corners of the little house to reduce z-fighting visuals.
WHAT I COULD HAVE DONE BETTER?:
· For rain particles, I could have added a splash particle when the rainwater collides with the terrain to make it more realistic and alive instead of it going through the ground.
· Not all the trees look exactly what I call “natural” trees, some looked a bit randomized with branches and a little bit blobby, so I will need to practice with the Tree Creator in the future to get better realistic trees.
· I would need to be careful how many leaves and branches are attached to the trees, otherwise, it will increase the polycount in the scene and crash the game.
· I only used a minimum of post fx this time because I thought without the player having a flashlight or lamp posts around, the player would struggle to find their way around if the post fx is too dark. So next time I should have a flashlight or lamp posts for the player to navigate around and use more post fx to enable me to use more of my creative freedom of it.
OVERALL:
Not only was this something a little different and a good exercise to improve my level design skills including sculpting the terrain and creating particles, but to try out new things like using the tree creator to create trees and using the wind zone to control how much wind to blow trees. Next time I may need to practice on the terrain editor and tree creator more to create more unique trees and terrain or just simply create trees and land from modular sets instead all respectfully, but that would depend on the next game I will be making. Overall- good exercise to expand my level design toolbelt.
#soledevoloper#australiangamedevoloper#indiedev#gamedev#gamedevelopment#indiegames#indie#indiegame#indiegamedev#indiegaming#game dev#design#project#walking simulator#fps#level design#unityengine#indie games#AustraliamGameDevoloper#game development#Soledevoloper#pcbuild#firstpersonshooter#designer#game design
5 notes
·
View notes
Text
Thinking of Making a Game? Here’s Why Unity Is Your Best Bet
Introduction
Diving into game development is an exhilarating journey, but the first major hurdle is selecting the right engine. With countless options out there, Unity consistently rises above the rest. Whether you're an aspiring Unity game developer or an established studio, this engine offers the perfect mix of power, flexibility, and ease of use. But what makes it the ideal choice? Why should you put your faith in Unity? Let’s break it down.
1. The Cross-Platform Powerhouse
Unity isn’t just a game engine, it's a gateway to a vast gaming universe. Supporting more than 25 platforms, from Windows and macOS to PlayStation, Xbox, and AR/VR devices, Unity allows developers to build once and launch across multiple platforms. The ability to scale effortlessly from mobile to high-end consoles isn’t just convenient, it's game-changing. This is why many Unity game development companies trust Unity for multi-platform releases.
2. Beginner-Friendly, Expert-Approved
Simplicity and power rarely coexist, but Unity bridges the gap beautifully. New developers can ease in with an intuitive interface, a treasure trove of documentation, and endless video tutorials. But don’t be fooled beneath its approachable surface lies a robust system packed with advanced tools for industry veterans. Whether crafting a simple 2D puzzle or a sprawling open-world 3D adventure, Unity flexes to meet your needs, making it a preferred choice for any Unity game company looking to innovate.
3. A Community That Has Your Back
In game development, isolation is the enemy. Thankfully, Unity boasts one of the largest and most supportive communities in the industry. Stuck on a problem? Someone’s already solved it. Need assets? The Unity Asset Store is stocked with models, animations, scripts, and tools that accelerate development. The collective wisdom of millions of Unity game developers means that solutions are always within reach.
4. Graphics That Wow At Any Level
From indie charm to AAA polish, Unity’s rendering power is undeniable. Choose between the Universal Render Pipeline (URP) for optimized performance and the High Definition Render Pipeline (HDRP) for jaw-dropping visuals. Want cinematic-quality lighting, realistic shadows, or breathtaking reflections? Unity makes it happen, no matter your experience level.
5. 2D, 3D, AR, and VR Unity Masters It All
Unlike some engines that pigeonhole developers into a single genre or style, Unity excels across the board. Need crisp 2D sprite animations? Covered. High-fidelity 3D landscapes? Done. Augmented and virtual reality? Unity is a leader in AR and VR development, seamlessly integrating with Oculus, HoloLens, and other cutting-edge platforms. No matter where gaming goes, Unity game development companies are already leveraging its versatility.
6. C# The Perfect Balance of Power and Simplicity
Game engines live and die by their scripting languages. Unity’s choice? C# a language celebrated for being both beginner-friendly and immensely powerful. Unlike the steeper learning curve of C++, C# offers an accessible yet versatile coding experience. Its well-documented API ensures a smooth learning process for those stepping into programming, while seasoned developers can leverage its full potential for complex mechanics.
7. Cost-Effective Without Compromise
The barrier to entry? Practically non-existent. Unity Personal is free yes, free for developers earning under $100,000 annually. This means anyone, from solo indie devs to small studios, can bring their ideas to life without upfront costs. As revenue grows, Unity offers premium plans that scale with your needs. The result? A low-risk, high-reward development environment.
8. Always Evolving, Always Improving
Technology never stands still, and neither does Unity. With frequent updates, feature rollouts, and optimizations, Unity remains at the forefront of game development. Collaborations with giants like Microsoft, Google, and NVIDIA ensure ongoing enhancements, keeping Unity in sync with the latest gaming trends and hardware advancements.
9. Monetization and Analytics Built Right In
Creating a game is one thing, making money from it is another. Unity simplifies monetization through Unity Ads and Unity IAP (In-App Purchases), making it easy to generate revenue from ads or in-game transactions. Want insights into how players interact with your game? Unity Analytics offers deep data tracking to help refine user experiences and maximize engagement.
10. A Legacy of Success
Some of the world’s most beloved games were built on Unity. Think Monument Valley, Among Us, Hollow Knight, and Ori and the Blind Forest. These aren’t just indie hits, they're proof that Unity scales with ambition. Whether crafting a small passion project or aiming for global recognition, Unity game companies consistently push boundaries using this powerful engine.
The Verdict - Unity Reigns Supreme
If game development is your dream, Unity is your best bet. Its unparalleled cross-platform support, intuitive workflow, powerful rendering engine, and thriving community make it the ultimate tool for developers of all levels. Whether you're an independent Unity game developer or part of a major unity game development company, the possibilities are endless.
With Unity, you don’t just make games, you create experiences that reach players around the world.
The only question left - What will you build?
#UnityGameDevelopment#GameDevelopment#Unity3D#GameDev#IndieGameDev#UnityGameDeveloper#UnityEngine#UnityGameCompany#GameDesign#UnityGames#MobileGameDevelopment#UnityDevelopers#ARVRDevelopment#GamingIndustry#GameProgramming
1 note
·
View note
Text
Friday Film Short
The Heretic, a 2020 animated short directed by Veselin Efremov, produced by the Unity Demo Team to demonstrate the current state-of-the-art capabilities of the Unity game engine.
youtube
0 notes
Text
DEV LOG 1 - Construindo o jogo plataforma Plumbers Paradise na Unity Engine
Aprenda como realizar a criação de um jogo Plumbers Paradise na Unity Engine. Prepare-se para acompanhar o desenvolvimento passo a passo, desde a concepção inicial até os desafios de programação e design. Explore os processos criativo, aprenda técnicas novas técnicas e descubra dicas para desenvolvimento de jogos. Entre no mundo de construção de games e torne-se parte da jornada dessa…
View On WordPress
#Construindojogo#DevLog#JogoDesenvolvimento#Plataforma Plumbers Paradise#Plumbers Paradise#UnityEngine
0 notes
Text
It's #TELLMETHURSDAY! (I know, a bit late) I firmly stand with the indie devs! I also wanna play your game on my channel! Share your links in the comments!
#TELLMETHURSDAY#gamedesign#indiegame#gamedev#indiegamedev#indiedev#indiegames#demo#Unity#unity3d#UnityEngine#unityruntimefee
0 notes
Text

To be fair, I'll probably put some time into learning all three, but Silent Shadow comes first. Been working on asset kits to use in the webcomic because I'm too stubborn (how about dumb?) to buy premade kits.
1 note
·
View note
Text
well one of the benefits of me being spite-motivated and easily pissed off is im still so mad about getting that shitty feedback yesterday that today i sat down and decided to see if i could code a seamless-audio-looping-with-reverb-tail mechanic direct in Unity instead of having to use middleware like Wwise, and i am happy to report that it actually was super easy and i did it in like an hour.
i really, REALLY don't think anyone who follows me is in need of coding seamless audio looping with reverb tail direct in Unity, but uh, if you happen to be, here you go under the cut. all u have to do is drag in 2 audio sources with the same audio file that has reverb tail baked in, then enter the # of bars, bpm, and beats per measure and it'll handle the rest
big thanks to this tutorial for going over the basics of AudioSource.PlayScheduled - https://johnleonardfrench.com/ultimate-guide-to-playscheduled-in-unity/#play_scheduled_intro
using System.Collections; using System.Collections.Generic; using UnityEngine;
public class ReverbLoop : MonoBehaviour { public int bars; public int bpm; public int beatsInMeasure; private double barlength; private double repeatlength; private double goTime; private bool zero;[Tooltip("Drag in 2 audio sources that are the same track each with reverb tail baked in. They will alternate to create a seamless loop.")] public List<AudioSource> trackDupes; private void Start() { goTime = AudioSettings.dspTime + 0.5; Calculate(); } private void Calculate() { barlength = 60d / bpm * beatsInMeasure; repeatlength = barlength * bars; } private void Prepare() { if (zero) { //the last playscheduled we did was for the zeroeth one trackDupes[1].PlayScheduled(goTime); } else { trackDupes[0].PlayScheduled(goTime); } goTime = goTime + repeatlength; zero = !zero; } private void Update() { if (AudioSettings.dspTime > goTime - 1) { Prepare(); } }
}
3 notes
·
View notes
Text
Virtual Reality Application Programming Using Unity
Virtual Reality (VR) is reshaping the way we experience games, education, simulations, and even healthcare. With Unity, one of the most powerful game engines available, developers can build immersive VR experiences across a wide range of platforms, including Oculus, HTC Vive, and PlayStation VR. In this post, we'll walk through the basics of VR programming using Unity.
Why Unity for VR Development?
Cross-platform support: Easily build apps for multiple VR headsets.
Powerful editor: Drag-and-drop tools for 3D design and prototyping.
Rich asset store: Access to a wide range of VR-ready models and plugins.
C# scripting: Intuitive programming with Unity's API and MonoBehavior system.
Setting Up Your VR Project
Install Unity Hub and the latest Unity version with XR Plugin Management.
Create a new 3D project.
Install XR Plugin Packages: Use the Package Manager to install:
XR Plugin Management
Oculus XR Plugin
OpenXR Plugin
Enable XR: Go to Project Settings > XR Plugin Management and enable your target headset.
Basic VR Interaction Example
Here's a simple example of C# code to grab and throw objects in VR:using UnityEngine; using UnityEngine.XR.Interaction.Toolkit; public class GrabObject : MonoBehaviour { public XRGrabInteractable grabInteractable; void Start() { grabInteractable = GetComponent<XRGrabInteractable>(); grabInteractable.onSelectEntered.AddListener(OnGrab); grabInteractable.onSelectExited.AddListener(OnRelease); } void OnGrab(XRBaseInteractor interactor) { Debug.Log("Object grabbed!"); } void OnRelease(XRBaseInteractor interactor) { Debug.Log("Object released!"); } }
Tips for VR Development
Optimize performance: VR requires high FPS to prevent motion sickness.
Use spatial audio: Enhance immersion with 3D sound sources.
Test frequently: Always test on the target device to ensure comfort and interactivity.
Design for comfort: Avoid fast movement, flickering, or close-up objects.
Popular VR Use Cases
VR Games (e.g., Beat Saber, Half-Life: Alyx)
Medical Simulations and Therapy
Virtual Training for Industries
Immersive Education Platforms
Virtual Tours and Real Estate Showcases
Conclusion
Unity makes it easier than ever to develop high-quality VR applications. Whether you're building an immersive game or a professional training simulator, mastering Unity’s XR tools opens the door to the limitless potential of virtual reality. Start small, iterate fast, and always keep user comfort and interaction design at the forefront of your VR development journey.
0 notes
Text
Welcome to the trans experience
9 notes
·
View notes
Photo
🚨 Exciting News Alert! 🚨 Nintendo Switch 2 is set to redefine gaming! Here's what developers are raving about: Nintendo confirmed the inclusion of NVIDIA DLSS upscaling and ray tracing in the new Switch 2, powered by custom RT and Tensor Cores. Game developers can use these features to boost graphics and performance, creating immersive experiences. 🎮 With 4K output in docked mode and smart upscaling boosting handheld mode from 540p to 1080p, get ready for stunning visuals! Unity Engine's integration ensures optimized rendering and easy game porting, while the upgraded 1080p display offers HDR and VRR for smoother, vibrant gameplay. 🌟 Excited for your first play on Switch 2? What game would you love to see with these upgrades? Let us know! 👇 #NintendoSwitch2 #GamingInnovation #DLSS #RayTracing #NextGenGaming #TechNews #GameOn #NVIDIA #UnityEngine #4KResolution #HDR #VRR #Switch2Updates #GamingCommunity #Graphics (Note: All figures converted to CAD where applicable.)
0 notes
Video
youtube
5 PORAD do #unity które MUSISZ znać #unity3d #gamedev #indiegamedevs
#youtube#unityengine#unity3d#unity2d#madewithunity#unityporadnik#unitypolska#unitypopolsku#programowanie#csharp#poradnikprogramowanie#tutorialprogramowanie#unitypl
0 notes
Text
Super Mario Clone (Adams version)
Want to play this game? click here: https://adamh5.itch.io/supermariocloneadamsversion
password is : SMC85
Normally I prefer not making clones of games that already exist on shelves and I also prefer making something original that sets itself apart from similar games, however, it wasn't until recently that I found an online course that contains a Mario Clone tutorial by Awesometuts on Udemy. Originally I started with the Mario Clone lecture (and some other lectures) in the course expecting to learn familiar Super Mario mechanics that are part of the norm of Sidescrollers like coyote time and responsive jumping (the longer the key it held, the higher the jump) for one of the upcoming original games I planned, unfortunately when I found out the game idea would be too complicated for this time round and the responsive jumping mechanic was nowhere in the Mario Clone lecture, I scrapped it and left it too rust in my computer and started with my other projects.
Until recently, I thought: What if the project could help me strengthen my game design, programming, and Level design skills? So I started to get back on the course and proceeded to complete the Mario Clone lecture.
After I completed the lecture, I was unsatisfied with the end result since the project had bugs, unfair difficulty, and unpolished mechanics. So I decided to take roughly more than a month to fix these issues as much as possible without making a full game with many levels since it is not a game I would make money by selling on Steam or Itch.io, that’s why I only made 1 level, used the only sounds in the package rather new sounds, and just generally focused on Quality instead of Quantity.
On the bright side: I learned a lot about managing sprites and Side scroller mechanics, It isn’t the first time I have prototyped a side-scrolling game, but it is the first time I started building the side-scroller game on my own except for the art assets are not mine and I was taught by AwesomeTuts which gave me a head start on building the game.
I was originally going to have it displayed only as a practice project which is unplayable by the public and only displayed on my Portfolio, but because I put so much work and effort into it, I thought of having it as a private product so only certain people can play my game and give me constructive criticism.
I don’t exactly know who made the original sprites and other assets, but I was provided by AwesomeTuts for the project.
WHAT WENT WELL?:
I managed to have little bugs in my game. Some bugs I had to let go like the player going stuck in between edges of snail shells and tree trunk edges because they weren’t too severe since this is not a full commercial game. At least the game does not crash or break mechanics to cause it to be unplayable for the Player.
I managed to stay organized with prefabs this time making folders with different sets of them like Lego bricks. E.g. “Ground” folder contains prefab sets “4x1 ground”, “1x1 Ground with 1 Trunk”, and “1Tree_2x1Ground_1Stump_1flower”. This made finding the exact prefabs for the level easier.
I successfully managed to put up a camera collider that stops the Player from going backward just like the original Mario games without the collider pushing other game objects with physics such as enemies and powerups. However, the Player's fireballs do collide with the camera collider on purpose.
I successfully used a public enum that I called “Item” which allows me to select which powerup the Player gets by jumping underneath the Bonusblock, by default I set it to “coin” which is self-explanatory and gives the Player coins. I figured most of the Bonus blocks in the game would give the Player coins.
I managed to make the Player lose the ability to throw fireballs upon enemy collision after the Player gets the Fireflower just like in the original Mario games.
Managed to get the game to freeze for a few seconds and play at normal speed in an instant. This is done when the Player has run out of lives and than falls off the level yet again just like in the original Mario games.
I set public bools such as “downfirst” and “FlipYDirection” to tell the spider to go down first and to flip its Y position sprite each direction it changes respectfully. If down first is false, it goes up first. This allows me to add character to each spider and to add challenge to the Player with its AI behavior.
Managed to get the spider to only die when the Player jumps on it and is also midair, so if the spider comes underneath the Player on the floating blocks, it will damage the player and still move up and down as normal.
I fixed a bug where if the Player hits underneath the Bonusblock and stays colliding there, multiple powerups will instantiate. Since the bug fix, only one powerup instantiates no matter how fast the Player hits the Bonusblock underneath.
I coded a mechanic where if the Player falls under a certain limit based on his/her Y.transform.position, the camera will stop following the Player, the Player movement script is disabled, play game over audio plays, and then restarts the level without using colliders to cover the empty pits where the Player can fall from.
I have made Player and Enemy scripts a bit tighter with being alive or not. If the enemy or Player is dead, they cannot respond to anything else from the code, for example when the Player dies and gets thrown back falling off the screen: he/she can not collect powerups, Though I did leave the Player accidentally falling on Beetle than bouncing off it while falling off screen because I thought it was a funny harmless glitch that didn't break the design or gameplay. Another example is birds won't drop eggs if already killed by the Player and the Player also cannot bounce off snails or beetles if already jumped on or died respectfully.
Creating the script for the Snail was a real challenge because it needed to execute code for not only the Snail itself, in its shell form but for the Beetle that shares the same script.
WHAT I LEARNT:
--Sprites--
Using the sprite editor to cut out the sprites I want and animate them in a new animation clip. While also changing samples of each animation for the player from 60 to 12 FPS to animate very similar to the 8-bit style.
Flipping Sprites X and Y by code (not transforms).
Changing Order in Layer in inspector by code (like Photoshop layers).
Can enable the sprite's sprite renderer on and off without turning off the Parent game object.
Getting the world width and height than divide them together with Main Camera Orthographic Size and divide them again with Screen height times screen width which are the screen size in screen space of the game view. Then scales the width and height of the background a little bit to match the full aspect of the camera frame.
Having fewer sprite sheets reduces the game's memory use.
--Player--
Using Yield return new WaitForSeconds inside a For loop with some public variables to make the Player flash a certain amount of times and time before the next flash every time the Player has been hit by an enemy. If the enemy attacks the Player while still flashing, the Player will not lose health unless flashing has stopped.
To add velocity on the Player going upwards after jumping on the enemy's head like in the original Mario games.
Able to Fire fireballs from the Player by instantiating at Quaternion identity from one transform.position and set the scale.x +1 or -1 depending on which direction the player is facing.
Getting and Setting the Movement speed value of the fireball script to be multiplied with the PlayerShoot script on transform.localScale.x from where the fireball is instantiated.
Velocity is speed over time for the Player's movement since we are adding speed to the player on inputs.
Changing the Player's sprite facing direction based on whether the Player is moving left or right with changing the X-Axis leaving the Y-Axis on the Rigidbody untouched.
If storing temp variables is not done correctly for Player movement directions, you will get an error telling you to store a temp value.
Converting the Players anim speed with Math.abs into an int to then convert it into the rigidbody x-axis movement either left or right depending on which direction the player is facing.
--Enemys—
For the Boss, using an IEnumerator to not take damage from Players' fireballs for a certain amount of time once hit by one until time is up and can be damaged once again, repeating the process again until it's dead.
Can use the “SendMessage(MethodName)” method to deal damage to the target (Player) propertie of OnCollisionStay2D who collides with the Boss while still alive.
Can change the Player RigidBodyType into dynamic along with turning on its BoxCollider2D trigger so the Player can fall through the level when lost all his/her health.
Using Vector.3 up and Vector3.down for the Spider as private variables to determine where the spider climbs first depending on the direction it's set too. Also to change directions in a certain time by a public variable.
Creating Collider2D’s with a Pyshics2D sphere from each position, size radius, and which layer for enemies to detect player collision depending on where the position.transform is placed. For e.g 1 Collider2D on each left and right side of the snail detects and damages the Player while moving. But the collider2D collision on top of the snail is its weak spot, which if the Player jumps on it, it goes into its shell and stops moving.
Experimented how powerful the Layer mask detection public variable is when detecting different layers of game objects such as which enemies are affected by the Snail shell after it was kicked by the Player.
Able to make a Snail shell be kicked by the Player after he/she jumps on its shell all in Snail Script, just like with the Koopas in the original Mario games. This is done by rigidbody velocity.
Creating RaycastHit2D detection on the Snails from the front and behind the snail while also using Vector2.left and Vector2.right respectfully detecting from a small distance and only the Players collider with the Player damage script. If The Snail is moving, it damages the Player, but if inside its shell after the Player jumps on it, it gets kicked in a direction depending on where the Player kicks it from and does not damage the Player unless the shell comes back towards the Player.
Able to check if the enemy has the appropriate functions to execute certain code. For example, the Beetles share the snail script with the Snails, if the Beetle has a Beetle tag, it will execute certain code, unlike Snails that go in their shells after the Player has jumped on them, the Beetles instead get squashed and die instead when jumped on the Player.
Able to get the Snails and Beetles to change opposite directions if it doesn’t detect any ground from on the edge or collides head first with walls and other enemies (Snails,Frogs and Beetles,) respectfully. These use Transform. positions each with short raycasts and bools for detection. Birds also have one raycast but it is to raycast infinity down to check if the Player is below them before dropping the egg damaging the Player if hit.
For the Bird, I was able to instantiate the egg from the Bird gameobject without an empty transform variable. Only instantiated – y position underneath the bird.
Able to get the bird to change directions with If statements if the Bird moves too far from its original position and change move direction both by Vector3’s.
Able to change the x.scale (-1 or +1) of the Bird depending on which direction the Bird is facing.
Can change the Bird rigidbodytype2D from kinematic to dynamic in code once the player jumps on Bird's head. This causes the bird to fall down.
The Frog is a child of its parent transform, I managed to code for the parent transform position to move to its child position to move the frog forward with every single jump it has made.
--Camera—
Camera options Aspect: gets the aspect ratio of the camera. Orthographic: gets half the size of the camera.
Able to code a camera script that determines the size of the collider for the camera and then resizes the collider for the bounds using a Vector2 for the Main camera’s aspect times the main camera OrthographicSize.
The variable “Bounds” represents the Axis aligned to the bounding box of the sprite background.
Able to get the camera following the player by first storing the Player's last transform position, then offsets the camera following the Player's current position on the Z axis.
Able to get the camera to not move back with a Vector3 whenever the player turns around and tries to go back rather than forward.
Vector3.SmoothDamp moves along the Vector3 to its end position smoothly. It takes 4 refs for player position, current position, current velocity, and camera speed.
The Ref method parameter keyword is to refer to the same variable that is passed into another method. Basically, currentVelocity variable is a ref and will be changed while the camera is moving and storing it there to follow the Player. So if the Player is too far from the camera, the camera will move fast smoothly towards the Player until at its current position and continuously moves behind the Player.
Screen.height is the current height of the screen window in pixels while Screen.width Is the current width of the screen window in pixels. These are the actual screen sizes in the screen space of the game view.
World space canvas are best for 3D games, not 2D games.
Anchors are really important to anchor UI that will adjust to different screen sizes so Players can see the UI easily and clearly.
Rect transform is the UI equalivent to the Vector3 transform.
100 pixels is 1 unit for the camera.
Screen space: The camera allows you to render in the camera view.
Scale With Screen Size: match width and height will closely match with the resolution with Reference Resolution.
Screen space Overlay: Will overly the canvas on the screen space. Used to position in UI elements.
The higher the number of sorting layers, the order of the game object sprites and text will be rendered first to last.
--Other/misc--
Calling Coroutines by public strings rather than by public function names.
Creating Physics2D.OverlapCircles by code to determine what position it starts at, its radius, what layers to detect to do things like damage Player, activate bonusblocks, and Player to detect if on the ground.
Using concatenation (converting int to string) for updating the Player score. Updating text from code like “coinTextScore.text = scoreCount;” won't work. However concatenations like “coinTextScore.text = scoreCount.ToString();” and “coinTextScore.text = "x " + scoreCount;” will work as intended.
The code outside of If statements will be executed regardless of If statements above are true or false.
Yield return new WaitForSecondsRealtime allows for the countdown to happen in real-time even when Timescale is 0 (when the game is frozen). It is independent of Timescale.
How I can set Bonusblocks from a start and end position to move up and back down to the start position smoothly by transform.translate, bools, and If statements once the Player has hit underneath it without moving it by animation.
Able to use parameters in code to determine each OneShotAudio audio clip volume rather than relying on the Audio source volume in the inspector.
FixedUpdate is good for calculating physics and rigidbody code, however, there are times it may need to be executed in an Update function.
Fixedupdate won't be called as often as the Update function. This compares to the Update function which is called in 60 times in 60 frames per second.
GetAxis and GetRawAxis. - Raw means whole number like 1. - GetAxis(not Raw)takes time to get to be a whole number in decimals. - GetAxisRaw goes to 1 as soon as the input has been pressed.
Z axis is not used for 2D game objects, only 3D game objects.
Localscale is a vector 3.
How I can freeze 2D rigidbody constraints such as the X position by code.
SmoothDeltaTime: Smooths out Delta time
Collider components work differently between 2D and 3D, This includes their respective rigid bodies.
Kinematic is not affected by gravity but is affected by physics such as applying force.
Rigidbody and transform don't usually match up well together.
The list of scenes in the build is actually an array list.
1 in animation speed = 100 in Unity.
WHAT WENT WRONG AND WHAT COULD I HAVE DONE BETTER?:
I didn’t organize the code to be cleaner and easier to read. I was full speed ahead testing different codes until one of them worked mostly for the Snail script because it was complex to act like a Koopa shell in the original Mario games, detecting edges, changing directions, dying by Players' fireballs and being hit by Snail shell including each enemy and Player in the game that respond upon collision. I need to stop at an appropriate moment, clean up code, and make comments to reduce running like a headless chook finding the right code I need to edit and make changes before I make catastrophic mistakes to the game.
I couldn’t add the Player Jump sound because I already programmed that you can hold the jump key to bunny hop without pressing the jump button each time you are on the ground. When you jump and the jump sound is played, the jump sound plays almost 3 times in a row each jump in an OneShotAudio which is annoying, I tried to change the input type so you not holding the jump button to keep bunny hoping and you hear the sound once each jump. Still, it leads to some unknown animation issues. I decided to let it go with no sound and hold the Jump key to bunny hop because if I changed it, I would have to redo the entire Player movement mechanic all over again. So next time when I’m making a platformer, I will start with the press once each jump with sound played mechanic.
I couldn’t program a mechanic when two snail shells (after the Player kicks both of them) ram together they both die, I couldn’t figure out why it wasn’t working, but it didn’t help that I did not clean the code to read better, so I decided not to include a game moment where the player can actually collide two snail shells together. I need to stay in the habit of making comments above code, clean code to read, and not repeating the same code in different lines but only one function.
I had to get certain pairs of ground tiles and mid-air blocks to share one collider before I had each tile have its own collider, but for some reason it stopped the player in its tracks despite having a physics material. If I am going to have tiles with colliders snap to each other like Lego bricks, I need to make sure it has the intended mobility for the Player without stopping him/her for no reason.
Regarding the lack of sounds, I could have found royalty-free sounds to fill the gaps of missing sounds like shell impact, or Player shoot fireballs, but since this project was more of a side project than a commercial one, I decided to let the sounds go and use the ones that were given to me by AwesomeTuts.
I tried to swap two detection transforms left and right whenever the Snail turned directions, but the detection transforms just went elsewhere and nowhere near the Snail, so I just simply left them there not to be switched around, and just simply flipped the sprite which did not affect the detection transforms.
I would think its best for the Frog to jump forward using velocity like how the Snails and Player use velocity to move, jump, and push away rather than using moving animations, that way I can easily control how far and high the frog jumps and if midair by the time player jumps on its head, it can just fall down midair like the bird does rather than go back to its previous landing position squashed and died.
I could have made one of the Bonusblocks respawn a Fireflower at the Boss area so the Player can continually fight and kill the Boss, but that ended up being very difficult to do, so I had to let it go.
I could have text feedback like 1Up like in the original Mario games to tell the Player they got an extra life after collecting a mushroom so they know rather than just guess what happened when they first play the game.
Could have had checkpoints around the level to reduce punishing difficulty for the Player, but it would have been extra work and yet again this was a practice product, not a commercial game, so I will keep that in mind next time I create a sidescroller/ platformer.
OVERALL:
Even though Sidescrollers and platformers are not my cup of tea and I prefer not to make clones of existing games. I’m still happy with the end result that I did the best I could to loosely replicate a Mario game from the assets given to me and taught respectfully. Someday I want to make a sidescroller runner, so this was a good start to learning Sidescroller mechanics to make a similar game in future.
It was also good to warm up my level design skills, I needed to do that so I am prepared to organize prefabs of set tiles so it's easy for me to find and use them.
Stand by for the next post on my level design of the game.
#gamedevelopment#indie#mario bros#gamedev#soledevoloper#australiangamedevoloper#indiedev#indiegame#indiegamedev#ftw#super mario#smb#side scroller#platformer#2d#unityengine#unity
1 note
·
View note