Search Unity

  1. Megacity Metro Demo now available. Download now.
    Dismiss Notice
  2. Unity support for visionOS is now available. Learn more in our blog post.
    Dismiss Notice

[RELEASED] TopDown Engine by More Mountains [new v3.0 : damage types, damage resistance, and more!]

Discussion in 'Assets and Asset Store' started by reuno, Oct 9, 2018.

  1. reuno

    reuno

    Joined:
    Sep 22, 2014
    Posts:
    4,914
    @rendi_unity > Thanks a lot for the detailed steps.

    So that behaviour seems normal, it seems you're not creating your AI character correctly if you want its model to rotate. You'd need to nest your model as explained at https://topdown-engine-docs.moremountains.com/how-to-create-character.html#hierarchy. Maybe CharacterOrientation3D settings are off too.

    If you follow these steps though, it should work as you expect :
    - in a new project in Unity 2019.4.26f1, import TDE v2.0
    - open the MinimalScene3D demo scene
    - create a new empty object, name it Enemy, position it at 5,0,5
    - under it, create a new cube, position it at 0,0,0, name it CubeModel
    - on the Enemy, add a Character component, press Autobuild AI Character 3D
    - in the Character inspector, drag your CubeModel node into the CharacterModel node
    - in CharacterOrientation3D, set RotationMode to MovementDirection, uncheck ShouldRotateToFaceWeaponDirection, ForcedRotation to true
    - add AIBrain, AIActionDoNothing, AIDecisionDetectTargetRadius3D, AIActionRotateTowardsTarget3D, setup the brain like you did on that last screenshot, it looks good to me
    - on the Radius decision, set TargetLayerMask to Player
    - on the rotate towards action, check LockRotationX (or don't if you're ok with some x rotation)
    - press play, your AI will look at the player when in range

    Note that you can find a ready-made example of that in the MinimalSandbox3D demo scene : MinimalGuide prefab, somewhere in the top right corner.
     
  2. rendi_unity

    rendi_unity

    Joined:
    Sep 24, 2020
    Posts:
    12
    Cool, that's what i need @reuno , thank you...

    Character Orientation 3D, Setup:
     
    reuno likes this.
  3. thomasoldier

    thomasoldier

    Joined:
    Apr 12, 2020
    Posts:
    2
    Hello, I was messing around with the TopDownEngine and the InventoryEngine trying to implement a basic multiplayer inventory system.

    I followed the "Key, Doors and Chest Tutorial". I'm trying to make a small Multiplayer game with 2 to 4 players where I need two basic inventories (one for Keys, the other for weapons) for each players.

    I wanted to change the Code in the Item Picker script so that :
    - the type of Inventory is stored on the item ex : "Key"
    - in the Item Picker script, inside the OnTriggerEnter if the collider is a Player I get the PlayerID ex : "Player2"
    - then I change the targetInventoryName to be "Key" + "_" + "Player2"
    And for each players I've already created two Inventories "Key_PlayerX" and "Weapon_PlayerX" so that the Item Picker script get to the right inventory. (It is not ideal at all but that's what I came up with).

    My issue is that I can't access the Character script on the Player who triggered the Item Picker.
    Basically, in the Item Picker Script, in the OnTriggerEnter method if I type
    PlayerData charInventory = collider.GetComponent<Character>();
    I get an error.

    It seems like I can't access the TopDownEngine Assembly from the Inventory Engine, I tried to manually add it but got a loop error.

    I created my own script in the Inventory Engine to store the PlayerID but it's not that great having two string references to the same thing.

    It would be easier for me to be able to access the TDE scripts from the InventoryE so I can get access to the CharacterInventory for example or the PlayerID.

    Is that restriction normal or did I broke something ?
    Is there a way to change that so I don't have to use a third script ?
    And last but not least is there an ETA on the Multiplayer Inventory support ?

    Thank you for your time,
    Best regards
     
  4. reuno

    reuno

    Joined:
    Sep 22, 2014
    Posts:
    4,914
    @thomasoldier > Yes, that seems absolutely normal. As explained in the documentation, and as is good practice, both packages use assembly definitions, and are meant to be extended, not modified like that. You can if you want though. As for ETAs, as explained in the FAQ, I don't give any, things get released when they're done and tested :)
     
  5. thomasoldier

    thomasoldier

    Joined:
    Apr 12, 2020
    Posts:
    2
    Thank you for your reply, I should have been more careful and read the documentation before posting ^^'
     
    reuno likes this.
  6. Sofiel

    Sofiel

    Joined:
    Aug 6, 2017
    Posts:
    60
    @reuno quick question,
    Can the tilemap generator be combined with the room system, or are there parameters I can twitch for it to generate interconnected “rooms” on the map?

    Thanks
     
  7. reuno

    reuno

    Joined:
    Sep 22, 2014
    Posts:
    4,914
    @Sofiel > Right now there's no example of that, but yes, theoretically you could build upon it to generate rooms.
     
  8. Sofiel

    Sofiel

    Joined:
    Aug 6, 2017
    Posts:
    60
    S

    @reuno sorry I forgot to ask, how do I get the enemies in there?
    Thanks again
     
  9. reuno

    reuno

    Joined:
    Sep 22, 2014
    Posts:
    4,914
    @Sofiel > That's up to you.
    That demo is just an example to show how to plug a procedural generation system to the engine, and show it can handle procedural levels or handcrafted ones just the same.
    In your own procedural system you'll likely have rules to determine how and where your enemies appear, but it's hard to decide how you do that for you :)
     
  10. Sofiel

    Sofiel

    Joined:
    Aug 6, 2017
    Posts:
    60

    Awesome, I’ll look into it. Thank you!
     
    reuno likes this.
  11. Sofiel

    Sofiel

    Joined:
    Aug 6, 2017
    Posts:
    60

    Tanks. I meant if there was a slot in which to place them such as the initial spawn or exit points, but clear enough. Thank you again for your time.
     
  12. reuno

    reuno

    Joined:
    Sep 22, 2014
    Posts:
    4,914
    @Sofiel > No, right now there isn't, spawn placement rules are typically something that will vary a lot from game to game.
     
  13. pgpais

    pgpais

    Joined:
    Nov 23, 2015
    Posts:
    12
    Hello, first of all, got to say that I'm enjoying your asset very much, so far!

    I have one question/request, though. When you're attacking, it is possible to prevent movement of the character during the attack. However, if you aim with primary movement, your character still flips around. This doesn't seem right, as you naturally try to run backwards to kite the enemy as you attack.

    In my case, specifically, I have my weapon configured to aim with Secondary and then Primary Movement. This is so the weapon faces the direction of movement when there's no aiming input. With a melee weapon, though, I don't want to have to hold the right joystick while moving backwards with the left one.

    Maybe I'm missing something?

    Either way, this should be easy to implement by extending the melee weapon class (didn't check yet). Just leaving it here as feedback (and in case I'm missing an obvious setting)

    Thanks for the asset!
     
    reuno likes this.
  14. reuno

    reuno

    Joined:
    Sep 22, 2014
    Posts:
    4,914
    @pgpais > That would require a PreventAimWhileInUse option, there's no such thing right now. I'll add that to my todo list.
     
  15. pgpais

    pgpais

    Joined:
    Nov 23, 2015
    Posts:
    12
    @reuno How hard would it be to implement that on my own? Any pointers?
     
  16. pgpais

    pgpais

    Joined:
    Nov 23, 2015
    Posts:
    12
    For those wanting to do the same thing, I coded a stupid workaround. Basically disabling the WeaponAim script when weapon is used.

    Code (CSharp):
    1. public class MeleeWeaponFixedAim : MeleeWeapon
    2. {
    3.    
    4.     protected override IEnumerator MeleeWeaponAttack()
    5.     {
    6.         Debug.Log("Disabling aim", _aimableWeapon);
    7.         _aimableWeapon.enabled = false;
    8.         yield return base.MeleeWeaponAttack();
    9.         _aimableWeapon.enabled = true;
    10.         Debug.Log("Enabling aim", _aimableWeapon);
    11.  
    12.     }
    13. }
    It's not fancy, but it works for now.

    EDIT: I'm dumb and that's not exactly how the code should look like. It should disable on the attack Coroutine, otherwise it just disables and enables it instantly (I don't know how it seemed to work when I tested it). I changed the code snippet to be correct.
     
    Last edited: Jun 2, 2021
    reuno likes this.
  17. reuno

    reuno

    Joined:
    Sep 22, 2014
    Posts:
    4,914
    @pgpais > Always hard to answer "how hard is X" questions, but I think you answered it :)
    I'll add an option for that to an upcoming update, with maybe a bit more control, but what you did is basically it, thanks for sharing your solution with others :)
     
    pgpais likes this.
  18. Sofiel

    Sofiel

    Joined:
    Aug 6, 2017
    Posts:
    60
    Thanks again @reuno
     
    reuno likes this.
  19. reuno

    reuno

    Joined:
    Sep 22, 2014
    Posts:
    4,914
    Good news everyone, I've just pushed v2.1 of the TopDown Engine to the Asset Store.
    This update cleans up quite a few bugs after the big 2.0 release, while also adding a few requested improvements.

    Here are the full release notes :

    - Adds the MMRendererSortingLayer component, that lets you easily edit any renderer's sorting layer and sorting order
    - The Health class now passes damage as intensity to damage feedbacks
    - Adds an example of 2D floating texts on the targets in the Minimal Sandbox 2D demo scene (in addition to the examples already present in Loft 3D)
    - Adds a PreventAllAimWhileInUse option to the Weapon component
    - Adds public methods to save/load/reset to the MMSoundManager, on top of the event based ones that already existed
    - The ProximityManager now updates references automatically on character swap
    - Removes useless references to object pools in HitscanWeapon
    - AIBrain's ResetBrain method now forces OnExitState
    - Adds extra sanity checks to AI actions and decisions
    - CharacterSwapManager now only resets the current character on swap
    - CharacterSwapManager is now a MMSingleton, thanks Alex for the suggestion!
    - Removes unused GroundLayerMask in TopDownController3D
    - CharacterSwapManager now triggers a StartFollowing CameraEvent on swap (helps with auto focus)
    - Adds extra sanity checks to DamageOnTouch to allow for delayed initialization (thanks Blind!)
    - CharacterSwitchManager now initializes on Start to allow for additive scene loadings
    - Fixes Startscreen options not saving correctly in builds
    - Fixes a bug that could cause InventoryWeapons to not grab the target Character correctly if the Inventory ability had been split across another node
    - Fixes a bug that could cause wrong speeds to be computed when going over steps
    - Fixes a bug that could cause AIBrains to not reset correctly after having been destroyed and then reintroduced in a pool
    - Fixes the EnterFeedback of button activated zones not playing correctly
    - Fixes initialization bugs with AIActionMovePatrol3D
    - Changes some MMFeedbacks editor icons due to Unity apparently removing them from more recent versions without any mention of that anywhere
    - Fixes a typo in the InventoryEngine readme
    - Fixes a typo in DamageOnTouch that would cause knockback direction to not be computed correctly when in BasedOnOwnerPosition mode
    - Fixes AIDecisionDetectTargetRadius3D returning false when its target check frequency was slower than the brain's decision frequency
    - Fixes potential bugs with AIActionMovePatrol2D not resetting properly when pooled
    - Fixes imprecise AI brain grabbing in CharacterSwap
    - Switch animations are now snappier
    - Removes unused terrain assets
    - Adds MMAudioListeners to all demos' audio listeners to allow for additive scene loading
    - Renames TilemapLevelGenerator's GenerateOnStart to GenerateOnAwake, to reflect what it actually does
    - Renames Weapon's _aimableWeapon to _weaponAim for consistency
    - Adds a warning log when trying to restart a scene without checkpoints or initial spawn points setup
    - Adds a component menu entry to MMSoundManager
    - Tweaks Grasslands' damage feedbacks
    - Tweaks LoftSuspenders' damage feedbacks
    - Reworks the paths of a few demo AI characters
     
  20. zackarhino

    zackarhino

    Joined:
    May 19, 2016
    Posts:
    7
    Hey reuno, loving the update so far. I was the guy asking about the grid functionality a few pages back... I'm still having similar issues with the collision. It seems like whenever a Character with grid movement hits an unexpected collider it will just get stuck and will never return to the "perfect tile" state. I don't plan to go off the grid, so to speak, but I don't want people to get stuck forever if they hit a weird wall or something. The box colliders in the demo work pretty well but I've also managed to get stuck in those too if the collider is not set a specific way.

    I'm currently using a tileset collider with a composite, which works some of the time, but I've tried a few others and I still get stuck in a lot of them. I noticed that the documentation said to make it generate polygons, which I tried, but still no luck. Making the Box/WhateverCollider2D on the Character smaller seems to help, but I've even made it just a small part of the feet and it still seems to get stuck sometimes. This happens even if the speed is set to relatively low.

    I'm wondering if you could help me figure out what's causing it or if I could get your recommendation for setting up colliders for a grid-based game. Thanks.
     
  21. reuno

    reuno

    Joined:
    Sep 22, 2014
    Posts:
    4,914
    @zackarhino > I'm not aware of any issue with the grid system in the latest update. It expects correct level design, like in the demos, and will not perform well if you don't comply to these level design rules, so that may be the problem here. If your issue persists, don't hesitate to use the support form and provide repro steps in any of the demos, I'll be happy to investigate.
     
  22. zackarhino

    zackarhino

    Joined:
    May 19, 2016
    Posts:
    7
    Well ok, but the level in the demo just has a bunch of box colliders, which I don't think would be very efficient for a grid-based game. I'll try to see if I can reproduce it, I'm trying to stick to convention and within the bounds of the engine as much as I can, but is there a way I can make it work with a composite tileset collider or some sort of polygonal collider?
     
  23. reuno

    reuno

    Joined:
    Sep 22, 2014
    Posts:
    4,914
  24. zackarhino

    zackarhino

    Joined:
    May 19, 2016
    Posts:
    7
    Yeah that's fair, I was thinking more about like the work that would go into making it rather than CPU power. I'm trying to build a sort of overworld so I will probably have a good amount of tiles in a given area. I just don't want to have to add all the colliders by hand. I'm pretty sure you can script the tiles to give themselves a box collider or something, I'll have to look into that, but I feel like it would be easier if I could just throw on a tilemap collider and composite, plus I want to try to minimize getting stuck in the walls. I don't know, I'll play around with it and see if I can get it to work reliably I guess. Thanks for the help.
     
  25. zackarhino

    zackarhino

    Joined:
    May 19, 2016
    Posts:
    7
    I think I fixed it by switching the layer of the wall tilemap to "Obstacles", mistake on my part, sorry about that.
     
    reuno likes this.
  26. Mr-Chet

    Mr-Chet

    Joined:
    Jun 7, 2021
    Posts:
    3
    Hey Reuno, asset is great so far! Just trying to set up an inventory display or hotbar so that I can ideally have up to 3 items equipped at once bound to 3 different keys.

    The basic setup would be: Open main inventory > hover over item > input 1, 2, or 3 to put it onto the new hotbar/display(s) slot 1, 2, 3 respectively.

    While playing the game input 1, 2, or 3 would equip the item in that slot.

    I cant seem to figure out how to bind multiple equip keys (to different inventories), or assign different slots of a hotbar to different keys. Is this possible in the engine? Or am I taking the wrong approach to this function? An example would be like the old zelda games where you could assign any item to the A or B button.

    Thanks,

    Chet.
     
  27. reuno

    reuno

    Joined:
    Sep 22, 2014
    Posts:
    4,914
    @Mr-Chet > There's no such feature built-in at the moment, but it's on my todo list, I'll add your vote to it.
    In the meantime you can implement it on your own if you'd like, basically you'd have to have a class/system bind an input to a slot's equip method.
     
  28. Mr-Chet

    Mr-Chet

    Joined:
    Jun 7, 2021
    Posts:
    3
    Thanks for the fast reply! I'll give it a shot. Is there a particular script I should be trying to add the functionality to?
     
  29. reuno

    reuno

    Joined:
    Sep 22, 2014
    Posts:
    4,914
    @Mr-Chet > No, that'd be a new feature, you'd need a new script for that.
     
  30. Mr-Chet

    Mr-Chet

    Joined:
    Jun 7, 2021
    Posts:
    3
    Perfect. Thanks for the guidance.
     
    reuno likes this.
  31. zackarhino

    zackarhino

    Joined:
    May 19, 2016
    Posts:
    7
    Hey reuno, so I ran into another small issue with the grid movement (sorry). I've got the collision working great now, but I found a small quirk when I run into walls. I'm not sure if this is how it was intended to work, but when my player runs into a wall and then changes direction, they will continue to slide along the wall indefinitely while the original button is held.

    To elaborate, I'll give an example (the game is a 2D top-down game): The player holds 'W' to move upwards toward a wall. Upon colliding with the wall, the player quickly taps 'D' (while still holding 'W') to move to the right. After releasing 'D', as long as the player is still holding 'W', they will slide along the entire length of the wall until they can move forward.

    EDIT: To make this clearer, they will continue to move to the right while holding 'W', instead of stopping as expected.

    I recognize that this is such a small issue, but I'm really trying to get a tight game-feel, so it's pretty important to me. On a related note, what's the best way to approach extending your code? After looking at the grid movement code, I think I'm starting to understand how I could approach changing it to better fit my game (minus the buffer), but I'm not really sure how to start building off of it, if I'm being honest. I know the documentation mentions extending CharacterAbility to make custom abilities, but does that work for changing existing abilities? I've tried extending CharacterGridMovement as well but that just results in duplicate code that breaks everything. I don't really want to go in and just change the code in case I decide to update again. It's totally possible that I'm just not knowledgeable enough on inheritance in Unity, so I'm interested to hear your input on how you'd approach this.

    Thanks,
    - Zack
     
  32. reuno

    reuno

    Joined:
    Sep 22, 2014
    Posts:
    4,914
    @zackarhino > If you think you've found a bug, please use the support form to report it, thanks.
    As for extending classes, that's done like in any Unity project. In this case you'd want to extend CharacterGridMovement, not CharacterAbility. No need for duplicate code, that's what base.Method is for, and it shouldn't (and won't) break anything :)
     
    zackarhino likes this.
  33. Tretiak

    Tretiak

    Joined:
    Jan 22, 2018
    Posts:
    49
    Hi i have a bit programmatical problem, i want to extend from LevelManager which extends from Singleton class. I create NewLevelManager class, which has all LevelManager methods, but when I want to access NewLevelManager.Instance, it always refers to LevelManager type, so through Instance variable I cannot access methods in NewLevelManager. I can create another instance variable in NewLevelManager, but I would like to use Singleton Instance variable. Any help with this ? Thanks
     
  34. reuno

    reuno

    Joined:
    Sep 22, 2014
    Posts:
    4,914
  35. Tretiak

    Tretiak

    Joined:
    Jan 22, 2018
    Posts:
    49
    reuno likes this.
  36. rendi_unity

    rendi_unity

    Joined:
    Sep 24, 2020
    Posts:
    12
    @reuno , i want make floating joystick, did your engine support?
    if support, how to make floating joystick with your engine? because i can't find that topic in your documentation.
    any suggestion please.
     
  37. reuno

    reuno

    Joined:
    Sep 22, 2014
    Posts:
    4,914
    @rendi_unity > I don't know what you mean by "floating joystick", but this is a top down framework, it focuses on top down mechanics, not mobile input (which I suppose is what you mean). You can use any mobile controls of your choice with it, there are some in the demos as examples, but I don't think they're floating. If you have more questions, please use the support form, thanks!
     
  38. rendi_unity

    rendi_unity

    Joined:
    Sep 24, 2020
    Posts:
    12
    Floating Joystick mean the Joystick will show up when you touch the screen, and the joystick position will follow your touch point position on the screen (dynamic position).
     
  39. reuno

    reuno

    Joined:
    Sep 22, 2014
    Posts:
    4,914
    @rendi_unity > Then there's no such thing in the engine.
     
    rendi_unity likes this.
  40. Tretiak

    Tretiak

    Joined:
    Jan 22, 2018
    Posts:
    49
    Is possible with inventory engine create loot/vendor inventory that shows on demand, for example: open a chest and chests inventory shows, where I can put or take items from into my inventory. One solution is that I can create one special inventory that loads inventory items every time I loot something, but I want to see 2 inventories at one time: my inventory and loot/vendor where I can transfer items between 2 opened inventories.
     
  41. reuno

    reuno

    Joined:
    Sep 22, 2014
    Posts:
    4,914
    @Felinsky > Everything's possible if you implement it, yes. There's no such feature at the moment if that was your question, but it's of course possible.
     
  42. justalexi

    justalexi

    Joined:
    Aug 4, 2019
    Posts:
    12
    Hi @reuno
    Thanks for the great asset, it's a pleasure to work with it!

    I've started to add enemies to my game and stumbled on a strange behavior of enemies equipped with projectile weapons. Then I tried unmodified "NinjaRifleman" and the same strange behavior reproduced.
    It looks like there are different algorithms fighting for control over enemy's aiming. What's worse at closer ranges they end up shooting at some random directions and not in the direction of the player.
    To illustrate, here is the gif.

    Maybe you already know how to fix this?

    ps. My version is 1.10.1.
     

    Attached Files:

  43. JohnWizard

    JohnWizard

    Joined:
    Feb 3, 2017
    Posts:
    11
    Hello! I noticed in the demo (the minimal 3D sandbox scene) that you can climb all the slopes when jumping repeatedly, even the 80 degrees one. I want to know if the engine currently has a solution to that issue, thank you.
     
  44. reuno

    reuno

    Joined:
    Sep 22, 2014
    Posts:
    4,914
    @JohnWizard > There's nothing in the engine to prevent you from jumping, no. You could extend the jump ability to prevent it from allowing jumps on certain slope angles if you want to.
    @justalexi > Without exact repro steps and just a video, it's a bit hard to tell what your issue is. I'd recommend trying v2.1, it's fixed a lot of aiming/AI related things, hopefully it'd solve your issue.
     
  45. justalexi

    justalexi

    Joined:
    Aug 4, 2019
    Posts:
    12
    The repro steps:
    1. Install TopDown Engine.
    2. Open KoalaRooms or KoalaDungeon scene
    3. Add NinjaRifleman to the scene
    4. Play the scene
    5. Walk closer to the enemy, trying to stay on the edge of his firing distance.

    I've tried the v2.1. It looks like the bug is fixed when the player is close to the enemy, but it is still present when the enemy is just able to shoot.

    I've recorded a couple of videos with both versions of the engine, from the install to the repro. The interesting parts are time coded in the descriptions. Here's the one for v2.1, the most prolongated bug-part starts at 2:10.
     
  46. reuno

    reuno

    Joined:
    Sep 22, 2014
    Posts:
    4,914
    @justalexi > No need for videos - especially non unlisted ones, just detailed repro steps like the ones found at https://topdown-engine-docs.moremountains.com/recipes.html are usually enough, thanks!

    As for that "edge of the firing distance", it doesn't look like a bug, but definitely poor settings in that demo character if one wants to support that use case. The move radius is set to 8, and the AIDecisionDistanceToTarget is set to LowerThan 8, so if you're on the edge you'll keep switching between the Moving and Attacking state. A better Brain setup, or adding an overlap in the distances (setting the DistanceToTarget decision's distance to 9 for example) will fix that. If your issues persist, don't hesitate to send me more info via the support form (https://topdown-engine.moremountains.com/topdown-engine-contact), I'll be happy to help!
     
  47. justalexi

    justalexi

    Joined:
    Aug 4, 2019
    Posts:
    12
    Thanks for quick reply!
    Yes, the increase in DistanceToTarget fixed NinjaRifleman, but it didn't help to fix my enemies. The symptoms are similar but not the same. I guess I'll just have to keep debugging or start the enemy from scratch. Thanks again!
     
    reuno likes this.
  48. correojon

    correojon

    Joined:
    Jan 15, 2015
    Posts:
    11
    Hi! I'm just starting with the asset, so far I'm very pleasantly surprised by how good it is :)

    I'm doing a small project where both the player and the enemies are tanks, so I'm going to need the turrets to rotate to face the shooting direction while the bodies move in a different one. This is no problem as the engine already supports it, but what will be the best way if I want to have animations that affect both the body and the turret of a tank? For example, when getting hit, the player will bounce backwards while the turret moves backwards and upwards at an angle (think of the turret as if it was the head of a character that had just been punched on the face). I think there are two ways to do this:
    1. Make both the body and the turret part of the character model, have animations that affect both parts and add an invisible weapon to the turret to handle shooting. Not sure how I'd manage rotating the turret to the shooting direction as it would be part of the character model instead of a weapon.
    2. Make the body the character model and the turret a weapon, with its' own animator (the weapon system already supports this). I think I would end with a replica of the character model animator with the same states and transitions so it seems a bit inefficient. It would also add some overhead to the work of creating the animations as I would have to export all animations for the body and turret separately, instead of having for example a single "flinch" animation that handles the whole character model.
    This is going to be a recurring problem as I want my tanks to be very expressive, with the turrets working as if they were the heads of a living being and taking part in many exaggerated animations like jumping, dashing, shaking it to recover from a big hit...And for the enemies, I will have tanks with more than one turret or other attached weapons that will also have to take part in all these animations.

    So, what would be the best way to do this?
     
  49. reuno

    reuno

    Joined:
    Sep 22, 2014
    Posts:
    4,914
    @correojon > Both your options would work. For option 1, you'd need another class to handle rotation (already exposed in the WeaponAim of your weapon, so easy to grab / apply). Eventually it comes down to which of these options offers the best workflow for you, I don't think one is better than the other.
     
  50. Toa5t

    Toa5t

    Joined:
    Jul 1, 2021
    Posts:
    1
    I'm just starting with TDE and I'm liking it so far :) I'm working on a 2D project where the weapon is actually part of the player sprite. Is there a way to make my entire player rotate towards the mouse position like a weapon can? Should I just set the weapon model as the player sprite I have and make the actual player have no model/sprite? Thanks!