A new version of my component has been released on the Asset Store called Object Motion Tracker, I am using in my own game, and thought it was about time I mentioned it here in the forums now that a number of people have used it…
About Object Motion Tracker
Object Motion Tracker is a component written in C# for the Unity Game Engine that will enable you to generate waypoint data of where an object has been, and also it’s rotation, and time since scene started when the waypoints are generated.
You are then able to access the data and use it in all sorts of ways such as engine trail FX, trailing magic FX, time travel, game mechanics, you get the idea!
Current Features are:
Loads of options to tweak and control the waypoint data just how you want it:
Adjustable Per Frame waypoint plotting
Time based waypoint plotting
Distance based waypoint plotting
Time and Distance combination waypoint plotting
Multiple methods for waypoint removal
Enable/Disable the storing of rotation and time based data
Multiple Waypoint Groups – The ability the stop tracking and start storing waypoint data to a new group
Offset Waypoint Data:
Offset by a fixed amount
Offset using Min and Max positions modified by a percentage value
Track a child object of the object that is being tracked
Waypoint Merging – Gracefully merge and remove old waypoints
Waypoint Limiter – Set max limit of waypoints
Extensive debugging options
Tons of example scripts
Full documentation
Component Options
Loads of options to tweak and control the data just how you want it:
Multiple waypoint plotting modes
Time based waypoint plotting
Distance based waypoint plotting
Combined time and distance waypoint plotting
Multiple waypoint removal methods
Multiple waypoint merging methods
Enable/Disable rotation and time data logging
Multiple Waypoint Groups – The ability the stop tracking and start storing waypoint data to a new group
Control what types of data are stored and the structure of that data
Offset Waypoint Data:
Offset by a fixed amount
Offset using Min and Max positions modified by a percentage value
Track a child object of the object that is being tracked
Waypoint Merging – Gracefully merge and remove old waypoints
Waypoint Limiter – Set max limit of waypoints
Extensive debugging options
Tons of example scripts
Full documentation
Full Featured Interface
Fully customised colour coded interface, complete with waypoint overview diagram, tooltips, debug panel, notes section and easy access to the stored data. Full visualisation of the waypoints being generated via the Scene window.
Waypoint Data Access Examples
Comes complete with scripts showing how to access the waypoint data, and how to configure Object Motion Tracker using scripts.
Ready To Use Examples
Want to use Unity’s built in components with Object Motion Tracker? Or see some examples of what it can be used for? Included examples to get you up and running quickly are:
Time Travel Script: Move back in time in various ways
Raycast: Detect when an object passes through the path you have travelled!
Particles: Generate particles along the path you have travelled!
Follow: Make an object follow the path you have travelled!
Line Renderer: Create engine trails or magic FX using Unity’s built in Line Renderer!
Vectrosity: Create engine trails or magic FX using Vectrosity!
1.2: Initial Public Release after internal testing and general use
1.3: C# and JS Version of all scripts and the component
1.4: Now includes adjustable per frame based waypoint plotting and a time travel script
1.5: Scale data is now being be stored. Updates and new functions to the time travel script. Dropping JavaScript Versions. Bug Squashing.
1.6: Updated the time travel example script, so that it checks there is data to work with before doing anything.
Significant Update
2.0: New Features:
Save your waypoint Data:
Saved as a comma delimited file allowing to analyse the data in 3rd party tools such as spreadsheets or use a 3rd party tool to generate/modify data!
Reverse waypoint group order so that data will be in time order. Making analysis even easier!
Full control over file names and location
Save can be done in the editor (without starting the scene)
Save can be triggered via your own scripts
File overwrite protection
Load your waypoint Data:
Replace existing data
Add to start of existing data
Add to end of existing data
Mark all waypoint groups as non-active on load
Reverse waypoint group order, useful if waypoint groups were saved in reverse order.
Load can be done in the editor (without starting the scene)
Load can be triggered via your own scripts
Save Object Motion Tracker Settings:
Saved within your waypoint data, so that you can use the same settings that were used to generate the waypoints!
Save only the OMT settings, just use it as a way of saving different set-ups!
Specify your own prefix ID to the waypoints - Useful if you have multiple objects generating data, or using a 3rd Party tool to analyse the save data.
Auto assign is now optional. OMT will automatically assign the game object it is attached to, as the object to track.
General optimizing to reduce garbage collection, and generally make things more efficient.
2.1: More updates to the time travel example script! The scrub bar now provides more feedback, and better handling of situations where the active waypoint group is being accessed.
OMT now provides easy access to the index number of the current (or last if not longer tracking) active waypoint group.
Purchased it yesterday and all I can say is that its an amazing and well organized plugin. Anyone interested in it please watch the video, the author has done an excellent job at making it. This is the only asset where I have seen the video only once and I could trial the plugin aspects I needed without going back to the video, great job. I too am using Vectrosity and I hope future updates integrate additional aspects of Vectrosity in OMT.
I had a quick question. The waypoint trails in the editor window are only visible when OMT GO is selected, is this by design? Would it be possible to see the trail if the focus is not on the OMT GO?
Thanks iamsam! I was worried the video might have been overkill, and I actually plan to produce a shorter showcase video to show the end results. If you have time I would very much appreciate it if you did a review on the asset store?
EDIT: Correction to my previous answer (Sorry long day!)
Are you using the C# version? I think I see the problem…
Open OMT_CS and go to line 816. You should see:
void OnDrawGizmosSelected ()
change it to:
void OnDrawGizmos ()
Hopefully that will sort it. I make the change in the next version.
No problem iamsam, glad it worked! As for V1.4 there will be a few new features, and some more example scripts of new and interesting ways to use OMT, as well as the above fix. I will post here when it is out!
Hey! New owner here. I’m making a replay system for my game… think Super Meat Boy after you finish a level.
FYI, Using the TimeTravel script to replay the movement and it’s causing an exception: Edit: It looks like the problem is I didn’t have rotation and time checked, but it still not working?
ArgumentOutOfRangeException: Argument is out of range.
Parameter name: index
System.Collections.Generic.List`1[UnityEngine.Quaternion].get_Item (Int32 index) (at /Users/builduser/buildslave/mono-runtime-and-classlibs/build/mcs/class/corlib/System.Collections.Generic/List.cs:633)
OMTTimeTravel_CS.TimeTravelListBuild () (at Assets/OMT - Object Motion Tracker/OMT Example Scenes/OMT Example C# Scripts/OMTTimeTravel_CS.cs:96)
OMTTimeTravel_CS.TimeTravelMachine () (at Assets/OMT - Object Motion Tracker/OMT Example Scenes/OMT Example C# Scripts/OMTTimeTravel_CS.cs:58)
UnityEngine.MonoBehaviour:StartCoroutine(String)
OMTTimeTravel_CS:Update() (at Assets/OMT - Object Motion Tracker/OMT Example Scenes/OMT Example C# Scripts/OMTTimeTravel_CS.cs:50)
Hi MrPhil! Thanks for the purchase much appreciated!
1: Edit: It looks like the problem is I didn’t have rotation and time checked, but it still not working?
You have found an issue where the time travel example does not check if rotation and time data is actually being stored by the OMT component. Thanks for letting me know, I am fixing that right now.
2:Continued error: Can you provide more info about what you are doing? Are you just playing with the time travel script or have you modified it at all? Either way, while fixing point 1, I will carry out more testing to see if I can replicate it.
OK, made some changes and can’t break it this end. If you PM you order number and email address, I will package up and send you the latest version (V1.5) that is due for release anyway (Holiday and Ill health both got in the way). That way you don’t have to wait to the asset store
V1.5 now logs the object scale, and additional functionality has been added to the time travel script to work with the new scale data! … as well as the bug fixes in the time travel script of course
I’ve only been playing around with your code, but I haven’t built my own system yet. The basic problem is when I create a sphere and drag it to the target on the Time Travel and then click the Time Travel bool it doesn’t move.
Edit: Actually, I should say it does move to the first waypoint, but then no further.
Hexagon Neuron was really helpful and not only fixed my problem but even wrote some custom code specific to my needs. Thanks Hexagon Neuron! 10 Stars, Would Buy Again!
Thanks MrPhil, much appreciated. I will be releasing the new modified version of the time travel script (2 new methods of time travel) with the V1.5 release (Scale data logging!). Not sure when that will be, hopefully sometime this month. Watch this space!
Hi Everyone. Just a little notice to say that V1.5 has been released! Scale data logging, bug squashing, updates to the time travel script for Super Meat Boy still replay. I have also dropped JavaScript support as all enquires and general support queries have been for the C# version.
I’ll be keeping it on sale until I release my next new component! More on that soon
Hi,
I came across this thread and I must say this seems to be a really great asset!
I have only one question: Is it possible to store the waypoint data permamently, so it doesn’t get lost when I leave the play mode? I was thinking of a scriptable object that acts like a database, so you can store this data and attach it to other gameobjects later. This would open a lot of more possibilities to work with this asset.(Like recording the movment of objects that under control of the physics system and use this data for other editor assets.)
Nice update, have been using this in all my projects, amazing plugin at a great price.
I agree, this would be an excellent addition to this plugin.
I had a quick naive question, I am trying to visualize the trail during runtime and was wondering if it is possible for the trail only to be rendered on one camera. I tried assigning the omt object to a different layer, however the line is still being rendered on the other camera, I guess I am doing something wrong.
Hi sloopidoopi and hello again iamsam Sorry for the delayed reply and can’t seem to get the forum to notify me of new posts.
Storing of waypoint data is on the cards, and will be the focus of the next version, and I have some ideas to extend that aspect even further! However I am right in the middle of bringing a new component to the asset store. Most of the code is done so artwork, documentation and assorted web stuff still needs to be done. After that, I’ll start work on the new version of Object Motion Tracker. If either of you are desperate for it, I will see what I can do to bump things along.
As for your trail question iamsam, remember that OMT creates the data, any of the example scripts I include make use of that data, so the camera assigned to it will be irrelevant Which trail are you using? Are you using the Vectrosity or Unity Line Renderer version? Also I must confess to being a little confused by the question. You should be able to see any trails mentioned above at runtime. The only other thing I can think of is that you are referring to the debug display? If so that uses Unity’s OnDrawGizmos () which is only available in the Scene window. Unfortunately there is no way round that. If that is the case, could you explain why you need that kind of option. Maybe it’s something I’ve not thought of
Thank you both for the feedback it really is appreciated!