dop2000's Forum Posts

  • Just to confirm this is where you want me to put this right?

    Sorry, I was wrong, the snapshot size needs to be in device pixels. And your formulas there were working.

    DrawingCanvas is required to change the resolution. You can use "set resolution" action, and the image will be exported with that resolution. The canvas and the sprite need to have the same origin point position.

    dropbox.com/scl/fi/iolct3pft9f9il8wvnwoh/ScreenShot-question2.c3p

  • You can use an invisible camera sprite with ScrollTo behavior and move it using MoveTo or Bullet behavior. Or change scrollY on every tick. Check out the official examples.

  • All the steps work, the file is saved. You just need to find the right formulas to calculate the resolution.

    I can tell you that LayerToCanvasX and LayerToCanvasY conversions are not needed. When taking a snapshot simply specify X=Sprite.BBoxLeft, Y=Sprite.BBoxTop, Width=Sprite.width and Height=sprite.height

    But then you need to resize the sprite and canvas to the right resolution before pasting.

    Check out this post, maybe it will be useful:

    construct.net/en/forum/construct-3/general-discussion-7/canvas-snapshot-layertocanvas-168819

  • Most of these actions are asynchronous - if you see a little clock icon to the right of the action, it means that the result will be delayed and you need to use an appropriate trigger (like "On Canvas Snapshot") or "Wait for previous action to complete". I suggest you study a few tutorials.

    So the correct sequence is something like this:

    System make snapshot
    Wait for previous action to complete
    Sprite load image from CanvasSnapshot
    Wait for previous action to complete
    Sprite set position to DrawingCanvas
    Sprite set size to ...
    DrawingCanvas Paste Sprite
    Wait for previous action to complete
    DrawingCanvas Save Image
    Wait for previous action to complete
    Browser download DrawingCanvas.SavedImageURL
    

    None of these actions should be run on every tick!

  • Try searching the forum, there may be similar examples.

    You might also need to use PlatformInfo expressions for resolution calculations.

    construct.net/en/make-games/manuals/construct-3/plugin-reference/platform-info

  • You can load the screenshot into an empty sprite, resize the sprite to your desired size and screenshot it again. Or paste the sprite onto a drawing canvas and save the image from the canvas.

  • You don't have to spawn body parts, they are created automatically when you create the body, because you have "create hierarchy=true". And you only need to pin once, not on every tick.

    Try this:

  • I found this solution - add these lines to package.json

    "icons": {
     "256": "icons/icon-256.png"
    },
    

    If you ticked "package assets" option on export, package.json will be inside package.nw archive.

    I think Scirra need to update their export to include these lines automatically.

  • But the problem occurs when the user hits the spawn button again, the pin only attached to the firstly spawn object only.

    When you spawn an object, in a sub-event pick its arm and hand using "Pick child" condition.

  • You can still use the hierarchy to create all objects. And once created, pin the hand to the arm.

  • Try Construct 3

    Develop games in your browser. Powerful, performant & highly capable.

    Try Now Construct 3 users don't see these ads
  • You do not have permission to view this post

  • In this particular case you will probably need to use Pin behavior to pin the hand to image point on the arm. Or update its position on every tick with events.

  • I fixed some mistakes in my previous comment.

    Here is a demo:

    dropbox.com/scl/fi/uqgd4mpi4823mi0wtmvzd/randomColors.c3p

    Another and better option is to use the Advanced Random plugin. Create a probability table with three values, and then for each sprite assign a value from it. Sounds scary, but it's in fact pretty simple.

  • For each Sprite Order by random(1)
    
     loopindex<Sprite.count*0.35 : Sprite set variable 1
    
     Else
     loopindex<Sprite.count*0.90 : Sprite set variable 2
    
     Else : Sprite set variable 3
    
  • Quotation marks are only needed when you set values via events. If you manually enter text values into instance or global/local variables, quotation marks are not required.