The forum on this site is closed for new comments and posts. Continue the conversation in the new forum, and learn more here.

Need Help Tapping Object to Change Color of Material

  • I am interesting in same thing. Switching between two sprites when tapped.

    Anyone who got a bit more of JS skills than I that is able to explain this?

    Comment actions Permalink
  • Hi VortexHero,

    Here's a script that changes the color of a sprite's material:

    // Bind this to the 'Initialized' event
    //@input Component.SpriteVisual visual
    //@input vec4 color = {1.0,1.0,1.0,1.0}

    // Enable full screen touches
    global.touchSystem.touchBlocking = true;

    // Add a reaction to Tapping
    script.createEvent("TapEvent").bind(function(){
    // Change the 'baseColor' property on the visual's material
    script.visual.mainPass.baseColor = script.color;
    });

    If you want to change a mesh's material instead, you can change //@input Component.SpriteVisual to //@input Component.MeshVisual

    Martin, here's a script that sets a Sprite's texture to the next item in a list each time the screen is tapped:

    // Bind this to the 'Initialized' event
    //@input Component.SpriteVisual sprite
    //@input Asset.Texture[] textures

    var textureIndex = -1;

    // Enable full screen touches
    global.touchSystem.touchBlocking = true;

    // Add a reaction to Tapping
    script.createEvent("TapEvent").bind(function(){
    if(script.textures.length > 0){
    textureIndex = (textureIndex + 1) % script.textures.length;
    var newTex = script.textures[textureIndex];

    // Change the 'baseTex' property on the sprite's material
    script.sprite.mainPass.baseTex = newTex;
    }
    });

    Hope this helps!

    Comment actions Permalink
  • Thanks so much, Jacob! Helps a ton!

    Comment actions Permalink
  • Now looking at it, is there any way to toggle between the two colors? Thanks!

    Comment actions Permalink
  • Sure, here's a version that switches between the original color and new color with every tap:


    // Bind this to the 'Initialized' event
    //@input Component.SpriteVisual visual
    //@input vec4 color = {1.0,1.0,1.0,1.0}

    var toggle = false;
    var originalColor = script.visual.mainPass.baseColor;

    // Enable full screen touches
    global.touchSystem.touchBlocking = true;

    // Add a reaction to Tapping
    script.createEvent("TapEvent").bind(function(){
    toggle = !toggle;

    // Choose either the original color or the input color
    var newColor = toggle ? script.color : originalColor;

    // Change the 'baseColor' property on the visual's material
    script.visual.mainPass.baseColor = newColor;
    });

     

    Comment actions Permalink
  • Thanks again, Jacob!

    Comment actions Permalink
  • just what i was looking for...thanks.

    Comment actions Permalink
  • Would you be able to use this to cycle through 8 different colors?

    Comment actions Permalink
  • Hi Barry,

    Here's a script that cycles through as many colors as you want. Just add them to the colors list.

    // Bind this to the 'Initialized' event
    //@input Component.MeshVisual meshVisual
    //@input vec4[] colors

    var ind = -1;

    // Add a reaction to Tapping
    script.createEvent("TapEvent").bind(function(){
        if(script.colors.length > 0){
            ind = (ind + 1) % script.colors.length;
            var newColor= script.colors[ind];

            // Change the 'baseColor' property on the mesh visual's material
            script.meshVisual.mainPass.baseColor = newColor;
        }
    });

    You'll have to enter the colors as R,G,B,A values unfortunately since arrays don't support the color widget. Let me know if you need any more help with this!

    Jacob

    Comment actions Permalink
  • Thanks Jacob! I'll get this implemented and circle back if I need some help with this.

    Comment actions Permalink

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!