AkiraWong's Forum Posts

  • Ah~ My apologize~

    I will buy a license and give it a try~

    Thank you~ ^_^

    That is a long time for me to back to C2~

    C2 improved very fast on every single details~

    I remember at that time its around r95, and now r132. Cool~

    Still my best 2D game engine. Keep it up~ ^_^

  • I have a suggestion function: Find related events via global or instance variables.

    When we created thousand of events, we may forget where we use the variables before especially changing something during design progress. The function work as below:

    Mouse over a global or instance variable and right click.

    Select "Find related events with this variable".

    It will highlight all the events that using this variable.

    I found out this is very useful especially for checking and clean-up progress. Hope C2 will have this function in the future release.

    Thanks.

  • Yes, there's a bug in Scirra Arcade~

    Some people also encounter this included me~

    When you accidentally clicked outside of game area~

    The movement become strange and you can't come back anymore~

    Previously Scirra also have this problem~

    But then they fixed, and now appear again~

    By the way. Thank you for playing~

    I'm glad you enjoy it~ ^_^

  • <img src="http://dl.dropbox.com/u/76168132/scirra_game/type_zeus/title.jpg" border="0">

    >> Click to Play <<

    Hi~

    After a long journey. I'm back to Construct 2 finally~

    Construct 2 is growing so fast. It's now r118 already. Great~

    This is my 4th game creation. A simple top-down RPG shooting game~

    Beat all the way to the end to finish this demo game~

    If you were destroyed or finished this demo~

    You can retry the demo with current level~

    Yes, more powerful attack.

    Hope you enjoy. ^_^

    Snapshots:

    <img src="http://dl.dropbox.com/u/76168132/scirra_game/type_zeus/snapshot_1.jpg" border="0">

    <img src="http://dl.dropbox.com/u/76168132/scirra_game/type_zeus/snapshot_2.jpg" border="0">

  • Global variable:

    var score = 0;      // Player's score.

    var multiply = 1.0; // Multiply rate for score.

    var destCount = 0; // How many objects were destroyed just now?

    Instance variable for the object:

    var score = 100;    // Default score if only destroyed 1 in a row.

    Every tick:

    multiply = destCount^2

    For each object:

    ----If (Object was destroyed)

    -------{+1 to destCount; +(object.score*multiply) to global score; destCount = 0;}

    Haven't try yet but hope this would help~ ^_^

  • I see~

    Because on your line 1123 & 1124~

    You force the NewTileUID to -1 when layer is visible~

    So that is impossible to reach line 1128~

    Bacause the NewTileUID is always -1~

    Try rearrange the code as below:

    If (Layer is visible)

    ----If (Some condition)---------{Set NewTileUID to -1}

    ----If (NewTileUID = -1)----{Do something}

    ----Else--------------------{Do something}

    Hope it help~ ^_^

  • Before giving you the answer~

    I would like to explain some basic structure of real coding~

    I think this will help you on C2 too~

    You have an event as below:

    If enemy is overlapping solid && For each enemy && Enemy direction = 1~

    "For Each" doesn't work within "&&" or "||" block in real code~

    You must declare "For Each" first before doing any actions~

    For example:

    For each enemy~

    ----If enemy is overlapping solid~ Do something~

    Same "For each" doesn't need to declare twice~

    You have a code as below on line 7:

    For each enemy collision box~

    ----If job1 is overlapping enemy collision box~

    -&&-For each enemy collision box~ <-- Declared twice

    -&&-For each job1~

    From event above, you declared "For each" within "&&" statement~

    In real code it will return compile error~

    In additional~

    Remember to pay attention on timing of events~

    Does the trigger run 1 frame or every frames~

    Sub events are important~

    You must put your events into correct sub-places~

    In order to execute correctly~

    That's it. Hope you learn something on this~ ^_^

    I cleaned up your file and this is maybe what you want:

    Deleted another wall, only yellow wall left~

    Deleted the "enemy collision box"~

    Adjusted job1's collision into "enemy collision box" shape~

    Instance variable for yellow wall:

    var wallSide = <varies>;   // Detect if it is left or right wall.

    Duplicate the wall, name the variable into "left" or "right"~

    Instance variable for job1:

    var moveSpeed = 200;       // Job1 moving speed.

    Behavior for job1:

    Custom Movement~

    On start of layout:

    Set job1 custom movement (Horizontal) speed to job1.moveSpeed~

    For each job1:

    ----If (job1 is overlapping wall)~

    --------If (wall.wallSide = "left")----{Set job1 to not mirrored;

    ----------------------------------------Set job1 custom movement (Horizontal) speed to job1.moveSpeed;}

    --------If (wall.wallSide = "right")----{Set job1 to mirrored;

    ----------------------------------------Set job1 custom movement (Horizontal) speed to -job1.moveSpeed;}

    Another suggestion:

    I have a habit to store some values / strings into variables~

    Instead of typing it directly into events~

    Because it's easy for tweaking in the future when you have a bunch of codes~

    That's it. Hope it helps. Good luck~ ^_^

  • Instance Variable for the shooter:

    var fireDelay = 0;   // Detect if ready to fire.

    var fireRate = 20;   // Speed of fire rate.

    When button is holding:

    shooter.fireDelay -1

    ---- If (shooter.fireDelay <= 0)

            {shooter.fireDelay = shooter.fireRate, Fire bullet}

    On button release:

    shooter.fireDelay = 0

    Hope it helps.

  • Maybe this is what you want~

    Instance Variable for the objects you want to scale:

    // Scale speed. Lower value = Faster scale.

    // Using power of 2 value for suggestion.

    var scaleRate = 64

    Every tick:

    Set objects size to:

    X = self.Width + (self.Width / scaleRate)

    Y = self.Height + (self.Height / scaleRate)

  • When I see your question~

    I immediately thinking of a settings from another engine~

    Called "Min Penetration For Penalty"~

    But my apologize, I can't help you on this~

    Since C2 doesn't have this setting yet~

    Even though set velocity & position iterations to 1000~

    Also cause a little bit pixels offset. But I think it's fine~

    Player won't see it unless they look very very closely~

  • On start of layout:

    Select any of your physics object~

    Under Physics: Global settings~

    Select set stepping iterations~

    Tweak the position iterations into higher value~

    It will make more consumption of performance~

    But more accurate physics calculation~

  • On start of layout:

    Set all info display images~

    Opacity to 0 / Visibility to invisible~

    Every tick:

    Set all of your info display images into~

    X: WindowWidth / 2

    Y: WindowHeight / 2

    If player is on colliding with sign & B button clicked:

    Set image opacity to 100 / visibility to visible~

    Sub event for above:

    If any key pressed~

    Set image opacity to 0 / visibility to invisible~

  • Just remove "" and use syntax instead of spacing~

    For example:

    if on clicked & Price <= "Money"

    Subtract "SpeedIncrease Price" from Money~

    Change to:

    if on clicked & Price <= Money

    Subtract SpeedIncrease.Price from Money~

    "" is for String~

    If you add it, the value will become String~

    Hope it help~

  • Try Construct 3

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

    Try Now Construct 3 users don't see these ads
  • Semo

    Actually you can use random(360). It's OK, no problem~

    The (random+1) is just my sudden idea~

    So that it update like a map radar instead of random~

    "Is between values" is using >= & <=~

    Just type your value (variable name) with upper and lower bound~

    And press OK~

  • Global variable:

    random = 0

    radius = 200

    Instance variable:

    Sprite2 (angleBetween = 0)

    Event:

    Every tick >

    Set random to (random+1)

    Sprite2 (Set position to (sun.X+cos(random)*radius, sun.Y+sin(random)*radius"))

    Sprite2 (Set angleBetween to (angle(sun.X,sun.Y,Sprite2.X,Sprite2.Y))

    Here control the angle which you don't want object to spawn~

    For your case:

    if Sprite2 (angleBetween <= 130) or (angleBetween >= 140)

    Sprite2 spawn GreenDot on layer 0 (Image Point 0)

    You may ask my angle is between 220 & 230~

    But why the angle in the code is (<= 130) or (>= 140)~

    That's because the calculation of angle(x1,x2,y1,y2)~

    The return answer is between (-180 to 180 degrees)~

    Start from opposite direction of the object~

    Yup. That's it. Hope it help. (^_^)