possible to track the tap position on display screen ?

  • Hi El Be! There's actually a fairly simple way to do this that uses the Touch and Manipulate component. Basically, you add an object to the scene that's rotated 90 degrees in the X. And then a sprite child that's rotated back with Touch and Manipulate components added. Then, we have to add a small script to allow there to be a negative min distance. 

    Example project here. Look at the object MyMovableSprite. Test it out by dragging the Sprite in the Preview panel:

    https://storage.googleapis.com/snapchat-lens-assets/f1a09194-f02d-43ed-92b8-62e843179ff0/lensStudio/Forum-Helpers/2d_manipulate_example.zip

    Comment actions Permalink
  • hey Travis, thank you for your quick response - meanwhile I found what I was looking for: it was the TapPosition Vector. 

    Which now brings me to the question how I could translate a normalized Position to Screenposition? Can you help me on that one? That would require to know the display size of the users phone I guess.... so how do I get those values?

    any help is truly appreciated 

    cheers Linus

    Comment actions Permalink
  • Hi eL Be,

    Do you want to convert the touch position to world space? If so you can use the screenSpaceToWorldSpace() function found on the Camera component. You can check the details here: https://lensstudio.snapchat.com/api/classes/Camera/

    Here's a quick example of finding world space position from touch:

    //@input Component.Camera camera

    script.createEvent("TouchStartEvent").bind(function(data){
    var touchPos = data.getTouchPosition();
    var depth = 1.0;
    var worldPos = script.camera.screenSpaceToWorldSpace(touchPos, depth);
    print(worldPos.x + ", " + worldPos.y + ", " + worldPos.z);
    });

     

    If you want to convert the touch position to the units used by SpriteAligner, you can translate like this:

    var alignerPos = new vec2(
    (touchPos.x - 0.5) * 2.0,
    (touchPos.y - 0.5) * -2.0
    );

    And here's a full example script using that:

    //@input Component.SpriteAligner aligner

    script.createEvent("TouchStartEvent").bind(function(data){
    var touchPos = data.getTouchPosition();
    var alignerPos = new vec2(
    (touchPos.x - 0.5) * 2.0,
    (touchPos.y - 0.5) * -2.0
    );
    script.aligner.bindingPoint = alignerPos;
    });

     

    Hope this answers your question!

    Comment actions Permalink
  • Hey Jacob - wow that does it for me. Thanksalotta.

    Comment actions Permalink
Have a comment?

Please sign in to leave a comment.

We're here to help! We just need a little bit of information...

What system are you using?

Have you downloaded the latest version of Lens Studio?

Please download the latest version of Lens Studio. If you still run into this issue, please come back and report it!

Is this issue causing Lens Studio to crash?

What system do you run Lens Studio on?

Version

Graphics

Follow the next steps to help us solve your issue:

  • Copy and paste this text into your TerminalCommand Window
    open ~/Library/Preferences/Snap/Lens\ Studio/ %LOCALAPPDATA%\Snap\Lens Studio Copy Text
  • Press ReturnEnter to run the command. The Lens Studio folder will automatically open
  • Prepare to upload your files: zip the "Log" Folder by right-clicking and choosing "compress."
    Locate the Log.txt file right above it.

    Attach a screenshot of the issue:

Name:

Email:

What is this most relevant to?

Please enter a brief description of your issue:

Thanks for submitting this issue.

Unfortunately, it's likely due to the operating system or hardware you're using – since they don't meet the system requirements for Lens Studio.

Still, we hear you loud and clear, and are logging the issue in case there's ever a workaround we can provide!

Minimum Requirements

Operating System: Windows 10 (64 bit); MacOS 10.11+

Hardware: Minimum of Intel Core i3 2.5Ghz or AMD Phenom II 2.6Ghz with 4 GB RAM; Intel HD Graphics 4000 / Nvidia GeForce 710 / AMD Radeon HD 6450 or better; screen resolution of 1280x768 or higher

We'll try to resolve this issue as soon as possible. Thanks for letting us know about it!

Keep an eye out for a followup email from us. We may have a couple more questions for you, or we might already have a solution to offer.

Happy creating!