Posts by Jacob

Welcome to our brand new Clickteam Community Hub! We hope you will enjoy using the new features, which we will be further expanding in the coming months.

A few features including Passport are unavailable initially whilst we monitor stability of the new platform, we hope to bring these online very soon. Small issues will crop up following the import from our old system, including some message formatting, translation accuracy and other things.

Thank you for your patience whilst we've worked on this and we look forward to more exciting community developments soon!

Clickteam.

    Remember the difference between conditions and actions. Every frame, the events have their conditions checked and then, if true, it executes the actions. A condition will not make an event happen more often, only less. The Repeat n Times condition is the same as Always, except that after n frames it begins to return false and never again returns true.

    The common term here is an 'easing algorithm' if you're looking for formulae online.

    I can't see anything wrong with the formula you're using, but the easing formula I settled on was

    Set X("Object") to (9 * X("Object") + X("Target")) / 10.0

    I'd check to see what your conditions are that make it move. Is it just on an Always event? Does anything else affect the position?

    You should really build your app so that collisions apply in logical places, but should you need to detect collisions on different layers, the easiest solution is to have a separate detector object on the layer you want to collision to happen, and always set the position to match your object. It will act as a collision mask on the correct layer, and collisions can resolve naturally.

    The programming way to do this is compare positions manually, eg, right of object A > left of object B, but left of object A < right of object B, and handle the event that way. This is how collisions are handled by Fusion under the hood.

    Another tip if you know roughly the range of numbers you're dealing in is to just multiply them by 1000 or so in the array, so instead of 1.077 you'd have 1077 listed and then you can just divide when you handle the data.

    Just to clarify for those concerned about how the expression editor handles decimals:

    A number with no decimals is called an integer. A number with decimals is called a float. When you multiply or divide integers with one another, you will always get an integer result. If any of the involved numbers is a float, you will get a float as a result. This is why 48/32.0 will give a result of 1.5, while 48/32 will give a result of 1. In an integer, the decimal places are simply cut straight off the end. This leads to a handy trick you can use to snap objects to a grid.

    X = X / 32 * 32
    Y = Y / 32 * 32

    At first it will divide the position by 32, and since 32 is an integer the decimal places are cut off and it rounds down to the nearest whole number. Then when you multiply, it takes that rounded number which forces the result to be a multiple of 32. I see above there was a discrepancy in HTML5 with rounding which leads me to believe division might always produce floats (don't quote me, never tried it) on that platform, in which case you can manually cast your division to integers in order to force the behaviour.

    X = int(X / 32) * 32
    Y = int(Y / 32) * 32

    This is the optimal format as it removes any guesswork as to the underlying mechanics of the expression editor. There would be no change in result by changing 32 to 32.0 in this case.

    Repeat while pressed:
    --> Add 1 to counter

    Counter is greater than 0
    +X Repeat while pressed (right click on the condition and click negate to put the X there)
    --> Set Jump Strength to Counter
    --> Set Counter to 0
    --> Jump

    But I don't think you can trigger jumps using the default platform movement via events. Or set Jump Strength even. PMO should be able to do this rather easily, but you'd be better off coding your own engine. Search for DavidN's Custom Platforming tutorial. It's fairly basic and will walk you through making your own movement engine with fastloops. My personal choice however would be a simple vector jump system

    You need two values: Acceleration (gravity), and Velocity (speed). Acceleration should be constant and you should set this to 1 or 2 or so (depending on the strength of gravity you want). Then you want the events

    Always:
    -->Add Acceleration to Velocity

    Always:
    -->Set Y Position to Y Position + Velocity

    This will cause your player to accelerate downwards infinitely. To Jump, set Velocity to a negative value, like -10. This will take effect immediately and cause the player to shoot upward until gravity takes over and it returns to the ground. You will fall through the ground currently, but if you change the Add Acceleration to Velocity event to not occur when the player is overlapping the ground and then nudge the player up a bit when you are you can stop this from happening.

    My personal recommendation would be to use a Text Array rather than multiple lists. X = 0 could be your first list, with the dfiferent items corresponding to different Y values. Then to change the list you just change the X index you're scanning from. (3,4) would be the fourth item on the third list if you used one based indexes, (1, 6) would be the sixth item on the first list.

    A handy workaround for the layer collisions is to have a separate collision mask object on a different layer and set its position to = your player, and then check teh other layer collisions using that instead.

    If you make your objects actives, you can use the layer object's feature Always: Sort by Y Descending to automatically make objects with a higher Y coordinate appear in front of others

    The trick is to not actually scroll, but just move the obstacles toward the player. When you create an object, Fusion automatically selects that object and will only apply actions to it. So you can do Create Object Pipe at 0,0, and then Set X Position of Pipe to 640 and Set Y Position of Pipe to random(200) to create varying heights of pipes. Then if you have a separate event Always: Set X Position of Pipe to X( "Pipe" ) - 5 they will move to the left and give your game the appearance of scrolling.

    You could make a Time value that you constantly add to when you throw it, and then set the X Position to

    Player X Position + Max Distance * sin( Time )

    When Time = 180, the boomerang has returned to the player. This will give a physically realistic interpretation nearing how boomerangs operate in real life (while still constricted to one axis)

    Using HWA, there are shaders that will allow you to rotate an active or layer visually. This does not affect the gameplay physics. You will have to code the rotation physics manually. However if you use HWA you cannot export to mobile or flash. If those are your targets, your best bet is to either render everything in Surface vector-like (slow) or manually rotate the actives relative to the center of the screen. This is the method used by Hempuli in Once in Space, a delightful little game you can find on the google.