No announcement yet.

Recreating Metroid's Scan-Visor

  • Filter
  • Time
  • Show
Clear All
new posts

    Recreating Metroid's Scan-Visor

    Hello there!

    I'd love to create something like Metroids Scan-Visor.
    For those who don't know, here's a little breakdown on what it does:

    • When visor is activated, all scan-able objects are colorized (this robot for example is colored green)
    • A scan takes about 1 - 3 Seconds.
    • When an object is being scanned, the visor automatically locks the players aim onto this target until...
    - The object is out of the players view (for example it's hiding behind a wall)
    - The Players releases the scan-button
    - The object is out of range.
    - The scan is finished
    • When the scan is finished, the game pauses and it shows a description about the scanned object.

    Here is an image of how the Scan Visor looks like:

    As I learn Unreal Engine 4 on my own, I'm very unskilled about that, and thus, I hope somebody can answer me the following questions in detail (As I don't know how to even start with this)

    1. How can I highlight scannable objects? How do I tell the game which object is scannable and which isnt?
    2. How can I toggle the Visor's visibility and functions on and off (as the Visor can be activated and deactivated)?
    3. I would go with a line trace every tick to check if the object isn't behind a wall or is in range. Is this a good idea or is there a better way?
    4. How should I implement the function of showing the description-screen of a scanned object? Should I create a widget for every scannable object and show it accordingly, or do I create a description in the object's blueprint and somehow send it to one global Scanning-Widget?

    I hope this isn't a too difficult task!
    As I said, I'm not very experienced in this, so I hope somebody can explain things in detail or show me links or something like this which would send me on the right track

    Thank you so much for reading!

    - Crimi

    Hey! This shouldn't be all the difficult to do in Blueprint, honestly.

    1 & 2. I would put a bool bScannable on each actor and set it true for everything you want to be scannable. When you switch on the visor you could find all currently rendered actors (Rama has a plugin that can do just this: here) and if the actor is being rendered and has bScannable set to true, you can mess with its material parameters to give it whatever effect you want.

    3. You could do the above method to find if something is out of view, but yes, it something is in view but out of range a line trace would work fine.

    4. You got it. Each actor contains the information pertinent only to itself, and when the player initiates the scanning that data is routed to a global ScanningWidget to display for the player. This is the best way to do anything programming related (Blueprint included), have a master that everything talks to, instead of everything being its own master. Cuts down on bloat that way.

    Hope that helps!