mikehive's Forum Posts

  • I guess there is no 100% solution, it all depends on the music.

    With some music tracks a tiny gap should not be such an issue.

    With others you can try fading out the intro and fading in the main track.

    Or you can overlap them a little bit - start the main music 0.5 seconds before the intro ends.

    Yikes! I think I owe you sort of an apology. I just tried your method again with some test files and it actually works perfectly now as far as I can tell. I thought I tried this already? But never mind, THANK YOU for your help :)

  • Thanks for the reply. Have you actually tried this? Sometimes you get a little tiny pause or a gap and it's not always completely seamless.

  • Okay! This has been asked a few times over the years by various people and I don't know if anybody has ever proposed a solution that works reliably, so I'm going to ask once more: I'd like to have music in my game that loops seamlessly but also has a non-repeating intro. What is the best, most reliable way to get this working perfectly? Did anybody ever figure it out?

  • Okay. I assume the problem is that C2's trigger events are basically true for one frame - ie the on-mouse-click check is true for 1 tick. But during that tick your text events all become true one after the other. It's like you're saying

    if user is clicking & thing is 1 - set 1 to 2

    if user is clicking & thing is 2 - set 2 to 3

    But the user is clicking the whole time the code is cycling through, so the 1 becomes 2 and 3 instantly, and the end user only sees the 3 when it's output.

    Okay. So what do we do about it? What I like to do is implement a cooldown time for advancing text. Give your text object an instance variable number called coolDown. Now you can do events like this:

    User clicks & coolDown = 0 & text is "whatever" > set text to "whatever 2", set coolDown to 10. (etc)

    coolDown > 0: subtract -1 from coolDown.

    Now the game will only be allowed to do ONE click check every 10 frames.

  • Dang, that file is 45MB! Is it possible to maybe just post a screenshot of the relevant events?

  • OK. What about you give the starship an instance variable called shotsToFire with a value of 10, and another one called shotCoolDown, with an initial value of 0. Then in events we can do this, no need for loops:

    • shotsToFire > 0 & shotCoolDown = 0: Fire a laser, subtract -1 from shotsToFire. Set shotCoolDown to 10

    [you might have to experiment with the shotCoolDown number, I just made it up; but it's the number of frames the game will wait between each shot in the 10-burst so it isn't literally firing once every frame, which will look horrible. With 10 in this value, the game will fire a laser, wait 10 frames, and then fire another, etc.]

    • shotCoolDown > 0: subtract -1 from shotCoolDown.
    • shotsToFire = 0, trigger this event once: wait 3 seconds, set shotsToFire = 10.

    And that's it. I haven't tested it, but something very much like that will do the job for you.

  • Try Construct 3

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

    Try Now Construct 3 users don't see these ads
  • Give your player character Platform behaviour with default controls set to 'no'. Then in events you'll need logic like this:

    Player is visible: Player>Platform>Simulate control>Pressing "right"

    Player is on the floor + when 'Space' is pressed: Player>Platform>Simulate control>Jump

    Player is not on the floor + when 'Space' is pressed: Player>Platform>Set gravity to 9999

    When Player lands on the floor: Set gravity to 1500 (or whatever it was to start with)

    That should do it

  • One way would be to prepare all the colorizable elements of your illustration -- the regions within the black lines -- as separate white sprites (PNGs), with the ReplaceColor effect applied. Then when the user clicks in a "color palette" sprite, store the clicked color value as a global value, and assign this to the ReplaceColor effect of any clicked illustration sprite.

    Depending on the complexity of your illustration, it could be a fair amount of work to position all the illustration sprites in the appropriate positions in the layout, but it should work.

    There may be other options that treat the problem more like paint fills, but I'm not aware of how to do this.

    Yes, this was how I would approach this problem. It will take some grunt work to set up but it is technically very simple to implement

  • Hello! There could be a few different ways to achieve this depending on what kind of colouring effect you had in mind. Do you have an example of something similar you'd like to replicate??

  • I think your question may be outside the scope of this forum. This board is for help with using Construct 2 to build a game. I'm not surprised that nobody here seems to be much help with how to get your Xcode certification sorted out? I think we might be the wrong people to ask

  • From the System Expressions page of the C2 manual:

    len(text) [can be used to do your button 2]

    Return the number of characters in text.

    mid(text, index, count) [can be used to do your button 3]

    Return the count characters starting from index in text.

    For button 1, you could separate your lines with a special character and then use that as a marker to split each line into tokens and count the tokens. For example you could format it as "HELLO\BYE" and do this: tokencount("HELLO\BYE", "\")

    https://www.scirra.com/manual/126/system-expressions

  • Here you go, this is all you need to do. I think your For-Each loop was messing it up.

    I always have time to try to help people, if I know how

  • Okay, I played with it a bit. Have your Sine object set to be Active on start, and then in events do:

    Start of level: set cycle position to 0.75, set Sine inactive.

    Sine object will begin the level in position A and then start moving smoothly when activated.

  • Hmm, I'm not sure I follow what the 0.1 sec delay is designed to do? What was the malfunction exactly?

  • The match test ought to be simple enough. Each French card could have an instance variable that contains the English phrase that it will accept as a match. For example the Bonjour card could have an instance variable called correctMatch that contains "hello", etc. When you drop two cards in the box it compares the English string to what the French card is looking for and tells you if it hits or not.

    You'll have to make sure that both halves of a correct match get put on the same screen together so you don't end up with a jumble of random card words that don't match up. So maybe at level start you could pull matches out of the array to populate both sides of the cards. Eg

    Level start - set French card 1 to random thing from array.

    For example the game pulls "Maison"

    Now pull the English translation and populate French card 1's correctMatch variable and also one of the English display cards at random.

    So, French card 1's correctMatch = "House"

    [random English card] - eg English card 7 becomes "House".

    If you set up the array so the French and English are always next to each other this oughtn't to be too hard to do.

    Eg

    0,0 = "Maison"

    0,1 = "House"

    1,0 = "Carotte"

    1,1 = "Carrot"

    2,0 = "Ours"

    2,1 = "Bear"

    and so on.