Hey guys!
I'd like to share some of my work for my personal project with you, and I hope you'll take it and add it to the framework for everyone.
Implementing a chest flashlight based on Silent Hill 2 Remake.
1. We need to bind the Spot Light to the game camera.
2. Change the Light Channel of this light to any other light source so it ignores our character model.
This way, we can place this light anywhere without any visual issues related to the character, but the light will still cast shadows from objects (it's important to have a matching light channel for the entire environment so that the entire environment is illuminated and casts shadows).
3. We need to enable turn in place mode for the character when they turn on the flashlight (I haven't been able to implement this yet).
4. We need to set a delay for the flashlight beam so it doesn't move in sync with the camera (I haven't implemented this yet).
As a result, we get a light source that truly fulfills its third-person gameplay function.
We illuminate the area with the cursor or stick, and the light is not tied to the hero model. We don't need to rotate the hero, you see? This system works independently.
In my opinion, this method is very simple to implement, doesn't require painstaking animation work, and fully fulfills its function.
This is exactly the method implemented in Silent Hill 2 Remake. The chest lantern model itself is just a decoration with an emissive effect, but the actual light comes from the gameplay camera.
In this video, I fully demonstrated how it works, comparing it to Silent Hill 2 Remake. I would be very grateful if you could help me implement point 3: Enable rotation on the hero's position when turning on the lantern, because I haven't yet been able to figure out how to do this correctly in the framework code. The framework flashlight itself is implemented dynamically in a separate component; it can't even be edited (as far as I understand).
Hey guys!
I'd like to share some of my work for my personal project with you, and I hope you'll take it and add it to the framework for everyone.
...
Your project looks great! Thanks for sharing your work with us. You've done a really nice job with the flashlight system!
Regarding Turn in Place, I've made a short video to give you a general idea of how you can enable it under specific conditions, such as when using the flashlight.
Keep in mind that you may need to test it with different systems and make some adjustments if any conflicts occur, as I haven't fully tested this approach myself.
Hope this helps!
VIDEO - TURN IN PLACE AND FLASHLIGHT
@farshad Thank you very much! This actually works. The only thing I’ve personally noticed is that this setting resets with any action.
Examples:
If we aim with a weapon and then release the aim, we can no longer turn in place.
Also, when turning in place is enabled, aiming works incorrectly (the character turns too sharply when we move the cursor; apparently, this mod affects this, and it needs to be disabled when aiming).
If we enter the damage zone, after taking damage, the turn in place is also disabled.
Could you suggest which component needs to include a condition such that if the flashlight is on, the turn in place should work after any other actions are completed?
Also, I would like to disable the logic of the classic flashlight and its mesh. Did I understand correctly that this logic is contained in the AC_Data component? How can I delicately remove all the classic flashlight logic, leaving only the button binding, where I could write my own logic?
@rozhkovskyproduction Yes, as I mentioned, since this setup hasn't been fully tested, there may be conflicts with other systems that need to be addressed.
We've added this to our list, and it's now in the queue for review. The idea is to support a chest-mounted flashlight while keeping Turn in Place functional and allowing the flashlight to follow the camera movement, similar to what you've already implemented.
If everything works as expected, we'll add this feature to the framework. However, we first need to review and test its interaction with other systems to make sure it doesn't cause any conflicts or break existing functionality 🙂