So I ported my AC game/demo/prototype/thing to iPad for the first time this weekend and I was really pleased with how smooth the whole porting process was.
That said I was left a bit confused by AC's "touch input" mode options.
Out of the three options (Context Sensitive, Tap Hotspot First Then Interaction, Interaction First Then Hotspot) I felt that Tap Hotspot First Then Interaction would be the most intuitive one.
This is because I want to be explicit with every interaction (even at the cost of an extra click) rather than let the game trigger an action that may not be the one that I actually wanted to do.
So I tried to set this mode, however it's still quite confusing how it works in the game.
What seems to happen is that when I click on a hotspot, the interaction icons (usually Use and Examine in my case) appear. Then intuitively I try to click on one of them but what happens is my second click triggers the default interaction (Use).
After reading the manual I realised that this is "by design" and actually what I need to do is "hold my finger down and then place another finger on the screen to trigger the secondary interaction".
This "works" once you know what you need to do, it's not very intuitive though.
So my question is: Is there a mode where I can click on the actual buttons?
Ideally the way I'd want it to work would be: Click *and hold* on a hotspot, while I am holding the possible interactions slide out from my finger, then I drag onto an interaction, then I lift my finger and then the interaction triggers.
Is this possible currently? How easy would it be to add if not? I may have a go at adding it actually as I think it's essential it works this way for my particular needs at least.
Also similarly I had trouble getting the feature where hotspots highlight based on player distance.
I just couldn't figure out the right settings to get this to work. I'd either get all hotspots highlighting or none. Distance didn't seem to matter.
And even when hotspots where highlighting it wouldn't happen in the expected way. What I'd expect to see would be the actual textual description of the hotspot to appear over the object/character as my character approaches it (similarly to the mouse hover on PC/Mac). Even cooler would be to have an alpha factor to it, so the further away I am (once within the eligible distance) the fainter the text looks.
What actually happens currently is just the interaction buttons appear. Again this is not very intuitive and not particularly helpful either.
On the subject of hotspots, I am playing an adventure game on iPad currently for reference and they have a very nice feature where holding your finger down for a couple of seconds will reveal all the hotspots in the current environment. When you lift your finger the textual descriptions of hotspots disappear again.
Lastly another somewhat clunky thing is that when you tap on the environment the default cursor appears (or interaction buttons if you tapped on an interactive object). However if your tap causes the camera to move these ui elements will move along with the camera rather than stay anchored to the object. I don't think this happens on PC (or at least I dont think I've noticed it if it does)
Comments
1) The manual states that the method of "holding left, tapping right" is only for Context Sensitive mode - in Choose Hotspot Then Interaction mode, you should tap the buttons. This works fine for me in my own testing. Try using the Demo game's menu temporarily, to see if it works with that one. If I recall, holding and letting go one touch is exactly how it should work.
2) Be sure to add a Highlight script to your Hotspot's Object to highlight field. You can even add the script to the Hotspot itself - it just needs that script to calculate the correct alpha.
3) AC can only show one Hotspot label at a time, but you can override this by referencing a Highlight script's GetHighlightIntensity() function. It will return a float that you can set as the alpha value of a custom Text label.
4) If the Input button "FlashHotspots" is triggered, this will happen. Since each designer will want a different method of triggering this, again a custom script is recommended. You can simulate this button with the following code:
AC.KickStarter.playerInput.SimulateInput (AC.SimulateInputType.Button, "FlashHotspots", 1f);
5) For full control over the way your UI works, you may want to consider converting your Menus to Unity UI. You'll then be able to correct their position through very simple code.
The Examine interaction present in Context Sensitive mode are a separate variable, and you do have to re-build the interaction links if you change your method midway through development. However, the Interaction lists themselves are still there: you just need to re-link them in the Hotspot editor.
Part of it is to do with the fact that AC didn't have "interaction modes" when it was first released - Context Sensitive mode was the only way of playing.
The other reason, as I said before, is that the Examine interaction isn't something that will necessarily transfer to other modes. But good reason or no - that's what it is. The established user base means it can't be changed officially.
You could, however, write a script that re-links them for you. Have a look inside Hotspot.cs - all you really need to do is add the lookButton variable to the useButtons List, e.g.:
useButtons.Add (lookButton);