I’ve tried to make several simple 2D games in Unity. Most have failed because I become frustrated with just trying to make simple objects move around. Not that this is hard as such, but the tools to do it just seem so long-winded.
I tried using the basic Physics 2D system and I find that it is just so convoluted and bloated in terms of what you have to set up to get some basic movements going. I wanted some objects to e.g. move along a conveyor belt then when they reached a machine, they would be moved into the machine and something happen etc. Setting this up with physics was just silly, it turned out… having to set up effectors and add colliders and tweak the settings and try to fudge multiple colliders with extra stoppers and stuff just to ‘make sure’ the physics behaved the way I wanted. I want a somewhat closed movement system which is exact and precise, but I’ve found out the hard way that the physics system is not this. It produces really free-moving objects which are fiddly to restrain and to sort of make sure that exactly what you want to happen happens, is quite a struggle.
What I want to see is just some goddam SIMPLE EASY system where you can just like, click an object and choose some basic prebuilt behaviors from a menu… like, this object moves left and right and repeats, or… this object can fly up in the air for a while and then land, or… this object can jump over small obstacles, or whatever. Like, I don’t want to have to go into something horribly complex like playmaker/uscript etc to hook up all these stupid wires and fudge variables to try to get it to do something. It should/could be so much simpler.
Does anyone know of an asset like this? I don’t really want or need ‘real physics’, it’s a total overkill. But I also don’t want to have to go in and hand-write all these scripts just to get objects to move around, text-based or visual-based. Isn’t there some simple plugin by now that just does basic 2d object movement, or is this a gaping hole in the market?
I totally get what you’re saying, and you’re right; using the physics engine for this sort of movement is a nightmare.
Personally, I just write scripts for each of the behaviors I need. These are generally pretty easy scripts to write. I do have some stock ones by now for common things like move from point A to point B, etc. But it hardly seems worth trying to make an asset out of these; they’re fairly trivial.
I’m just talking about sideways-on flat 2d movement. It should be as easy as just choosing a basic behavior (or set of) and configuring them IF desired (ie not necessary to get something moving). It should thus be possible to get an object to start behaving a certain way (even if that way is complex) within a few seconds.
Unity has a lot of great things going for it, but 2D support hasn’t been it’s strong suite. You could always look into other game engines that specifically are designed for 2D such as GameMaker Studio.
So, for your conveyerbelt object, you’d want to just say, “move left” or more like “move with conveyer belt”?
Mover left and repeat, what would that entail?
Moving the object for X seconds, destroy it and move a new object for X seconds?
Or perhaps, move the object for X seconds, move it the other way for X seconds, repeat add inf.?
I guess you search for an asset containing a script you can add to gameObjects.
This script should be easy to modify in the inspector, using only some bool, some enum, some values, and some other gameObject transforms you drag and drop on it from the scene.
Something like creating a magnet object just by clicking on “magnetize layers” and putting a layerMask on it , modifying the direction of the gravity of an object just by typing an Angle on it ?
I guess some poeple tried to create some, the problem i see is the behaviours the creator of the asset thinked about might be a lot different from the want you seek for.
So i believe the creator of such an asset must create some Interfaces so you could “easily” create using code some new behaviours.
I didn’t spend time on the asset store but maybe someone knows one .