What I did on an empty project:
-
Created a Pawn (blueprint) to create a static camera
-
Created a PlayerController(blueprint) and (“Class Defaults” → Mouse Interface → check: “Enable Touch Events”, “Enable Touch Over Events”, “Show Mouse Cursor”)
-
Created a GameMode(blueprint) setting up pawn and controller (looks right)
-
Settings → Project Settings → Input → Check “Use Mouse for Touch”
Entered blueprintmode of the PlayerController and listened to the “Event BeginInputTouch” and print a Hello string to the screen.
Save and compile everything and press play. No touch events are printed as intented.
What did I forget?
1 Like
Hello unicate,
After reading over your post, I noticed you did not mention setting up your game mode to use the new player controller and/or pawn that you have created. You would also need to set that game mode as the game mode for the level you are testing in. I believe this is what you may have forgotten. I hope that this information helps.
Make it a great day
That would’ve been too easy
Of course I did set the game mode too.
Here some screenshots.
Any ideas what else I could’ve forgot? This is really anoying!
1 Like
OK to make sure I havn’t done anything wrong I created a new project from scratch to reproduce this behaviour:
- Create an empty project
- Create a new Blueprint based on the Pawn class, set it up as a sphere with an arm and a camera looking on it.
So the whole thing looks like this now:
. Compile it, save it, close it.
3. Create a PlayerController and set it up to receive input touches
Compile, save, close.
4. Create a GameMode using Pawn and Controller just created
Compile, save, close.
5. Set the level to use the Game mode. And start the level. The now static camera with 45 degrees over a sphere is correctly shown.
6. Go into the player controller open the blueprint editor onTouchBegin → print string “hallo”, compile, save, close
7. Run the level:
Result:
- Camera is correctly shown
- Touch not received when clicking on the screen.
May be it helps when you take a look by yourself, I uploaded this minimal example to github:
https://github.com/andretietz/ue4-inputtouchtest
I am using Version 4.13.2 (if you have this, double clicking the uproject file should open the project)
After looking at the project, I found that the touch event you are using is for when the actor itself gets touched. This means you will need to use that in the pawn that is getting clicked. After making these changes, things appear to work correctly on my end. I hope that this information helps.
So I have to get the touches from the(a) pawn? Don’t I get then touches only when this pawn is clicked?
What I want is getting clicks from the whole screen, even those which are not on a pawn. Or do I misunderstand something here?
This example below will fire off when “CameraPawn” is touched. Meaning that when the “CameraPawn” is touched, “Hello” will print to the screen.
In this example, the event will fire off whenever touch is used (when the user touches the screen). This means that when the user touches the screen, “Hello” will then print to the screen.
Ah, I see. So there are 2 different kinds of touch-events. BeginInputTouch (and the 3 otherones) for actors. And one for global ones.
I tried it in Pawn and controller, both works!
Thank you very much!
hey @unicate
I downloaded your touch sample project, added a EventBeginInputTouch node in the camera pawn, the sphere still can’t be touched