One of the things I’ve been missing while creating in Horizon is the ability to hinge / joint two or more objects together. I’ve definitely missed this when trying to animate characters, but I’m also missing the ability to create objects like ropes or hanging elements like a swinging lantern.

And then I thought, well, we have items with physics, can I simply make a hook out of several simple cubes, group them with an object I’d like to hook onto something, and set the grouped object to interactable > physics? I did a quick test, and it worked! And the resulting animation was smoother and more reactive than I’d expected!

I’m excited to really start playing with this in my worlds, I see so many possibilities: ropes, swinging signs, applying force to an object to cause it to swing in response to external stimulus, a swinging door that will open when you push past it…

Note: this isn’t the greatest video… I was going to record a new, less shaky video tonight but I’m currently locked out of my worlds in Horizon. I’ll update the video when Horizon returns from the dead 🙂

I’ve always loved intertitles (title cards) in silent film, and I’m trying to figure out how to work with them in VR. In this scene, the player has just wandered through a maze of sorts and comes to the text “THAT NIGHT”. Between the words is a bed surrounded by animals. The player will be funneled into the bed via invisible walls, and once inside, the bed will carry the player thru the mouse hole.

Below is a sketch trying to figure out what I wanted to do:

And an exterior shot of the maze rooms:

Each room allows for a binary response: yes / no, true / false, a / b, and one of two doors opens based on the response. A console with two buttons sits between the doors.

A problem:

Right now in Horizon I’m working on elevator style doors that can animate open and closed using the ‘move to over time’ code block. This is working well, EXCEPT I can’t figure out how booleans work in here, or I’m doing something dumb. I’ve created a boolean variable “isOpen” and when the trigger is entered it checks: ‘if isOpen == false” to know if the door should be opening or closing, but it doesn’t seem to be working. If I remove the if statement with the boolean I can open the door just fine. I find visual programming challenging in this way, because you need to know exactly how code blocks need to be combined, and sometimes it feels like you need to know a secret handshake to make them work. 

But then again, there is a decent chance I’m just doing something dumb.

….later….

I found the issue. It’s not booleans, I’m setting and getting them just fine. It’s that there is no if else code block in Horizon, only if. If else statements allow you to do different actions based on different conditions.  I’m so used to using if else statements that I didn’t recognize that the two if statements in a row were simply running one after another. What I wanted to have happen was just a simple toggle: if door is open, close door and set door to closed, else, if door is closed, open door and set door to open. But without the else, it was just running the first if, setting door to closed, and then running the second if, setting door to open. There was no toggling based on logic.
What I ended up doing was pretty janky, but worked, you can see it in the screenshot.
So it was a little bit of Horizon weirdness (no if else) and a little of me doing something dumb.

I’ve loved Ed Emberley ever since finding one of his drawing books at my grandparents’ house as a young child. He created a series of drawing books for children in the early 70’s that demonstrated how to draw hundreds of different animals and houses and cars and boats and people and trains and monsters and…. all out of simple shapes. 

I thought about him as I began modeling animals in Horizon. I want to find a style that works with the low poly primitive shapes available in Horizon, as well as the memory limitations. It’s kind of fun to embrace the limitations rather than struggle against them.

Below are some really rough and early tests: