R0J0hound's Forum Posts

  • Using this:

    function dir(object)
    {
        methods = [];
        for (z in object) {
            methods.push(z);
        }
        return methods.join(', ');
    }[/code:1bptsq29]
    I was able to see all the members of cr, instance and renderer.
    
    cr.
    plugins_, behaviors, logexport, seal, freeze, is_undefined, is_number, is_string, isPOT, nextHighestPowerOfTwo, abs, max, min, PI, round, floor, ceil, vector2, segments_intersect, rect, quad, RGB, GetRValue, GetGValue, GetBValue, shallowCopy, arrayRemove, shallowAssignArray, appendArray, arrayFindRemove, clamp, to_radians, to_degrees, clamp_angle_degrees, clamp_angle, to_clamped_degrees, to_clamped_radians, angleTo, angleDiff, angleRotate, angleClockwise, rotatePtAround, distanceTo, xor, lerp, unlerp, anglelerp, qarp, cubic, cosp, hasAnyOwnProperty, wipe, performance_now, ObjectSet, KahanAdder, regexp_escape, CollisionPoly, SparseGrid, GridCell, effectToCompositeOp, setGLBlend, round6dp, equals_nocase, Property, Parameter, Condition, Action, Expression, FontInfo, ParseFontString
    
    instance.
    SetPosition, SetSize, GetSize, GetLayoutSize, SetHotspot, GetBoundingRect, GetBoundingQuad, EditTexture, GetTexture, GetOpacity, GetAngle, DrawTilemap
    
    renderer.
    Quad, Line, Line3D, Fill, Outline, CreateFont, ReleaseFont, LoadTexture, SetTexture, ReleaseTexture, EnableTiling, SupportsFullSmoothEdges
    
    A.
    1. Not that I could find.  Possibly there may be another global namespace, but since there isn't any plugins that use such a  thing it probably doesn't exist.
    
    2. Looks like there's a setPosition() but no getPosition(), so I guess averaging the corners it the only way currently.  There is a getAngle() though.
    
    3. See list above, other than that the following js files are used at edittime:
    common_prelude.js
    edittime_prelude.js
    
    Other than that you possibly could open C2 in a hex editor and find a list of js names, but I don't imagine you'd find many more.
  • You could use the "System:pick by comparison" condition with the distance() equation and an enemy "range" instance variable.

    Ex.

    System: pick Enemy by comparison distance(enemy.X, enemy.Y, player.X, player.Y) < enemy.range

    --- enemy stop

  • Instead of "Global" how about we call it "Card" since that is more descriptive and less confusing since global already has uses in C2.

    And just to restate the problem: you want to know when three of the cards have those 3 different animation frames.

    Do to picking we can't just have multiple "compare animation frame" conditions in one event and have it work like we want. We can make make a function to do this though as it doesn't affect picking.

    So you could do something like this:

    On function "hasCard"

    Card animation frame = Function.Param(0)

    --- set return to 1

    System compare: Function.Call("hasCard",3) & Function.Call("hasCard",5) & Function.Call("hasCard",7) =1

    --- Do something

  • Maybe instead of using anglelerp in multiple events, just use it once in an every tick event with anglelerp(bar.angle, weightRight-weightLeft, dt)

    And just make sure to add the weight's weight every time you pin it and subtract it every time you unpin. It looks like you got it mostly there but instead of checking for an overlap of groupBase in event 9, you rather need to check for an overlap of baseCheckL and baseCheckR individually in events 10 and 11 so you subtract the weight from the correct side.

  • There isn't enough info here.

    What steps did you do to see this bug? Do you have a minimal capx that reproduces the error?

  • The .scale expression was asked for before and the main problem was what value should be returned if the object was not uniformly resized? You could just use a instance variable instead though.

  • Make a post in the bug forums. Just using the physics behavior should not cause a javascript error.

  • You could normalize the angle to a range of (-180,180) with angle(0,0,cos(a),sin(a)) before comparison.

    Or you could use the sprite condition "is within angle" or "is between angles".

    Or you could use the anglediff(a,b) expression to find the angle difference in the range of (0,180).

  • digitalsoapbox

    I can't reproduce the issue. It's working fine here in Firefox, Chrome and NodeWebkit. Can you post a capx with the issue?

  • Try Construct 3

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

    Try Now Construct 3 users don't see these ads
  • So you're trying to measure reaction time? The "on key pressed" events are triggers, so they can happen at any time instead of just on a tick. Also the "wallclocktime" system expression may be of interest to you. It is the time elapsed (in seconds) since the start of your game, and it isn't affected by the framerate.

    As far as changing the framerate; you can't in C2. The framerate will basically try to match the monitor refresh rate which is usually 60hz.

  • isasaurio

    It works fine here.

  • Here is generic guide on how that type of game is done:

    http://www.extentofthejam.com/pseudo/

    I was able to get it working in Construct Classic here:

    viewtopic.php?t=58596&start=0

    And some discussion about doing it in C2 can be found here:

    viewtopic.php?f=156&t=77718&p=640214&hilit=pseudo#p640214

    An example for C2 hasn't been made as of yet though.

  • You could try the custom movement behavior's push out action but that doesn't work too great for moving objects.

    One idea is to treat the enemies and player as circles. Then see if they collide if any two of them have a distance between them less than the sum of their radius'. Then the overlap between them would be radius1+radius2-distance. To resolve the collision just move each object half of the overlap away from each other.

    Also you'll want to either set the speed to zero, bounce the objects or only set the velocity in the direction of each other to zero. The last two can be done with the help of a vector projection:

    Speed_at_angle= velocity_x*cos(angle)+velocity_y*sin(angle)

    Then you can eliminate speed in that direction by:

    set velocity_x to velocity_x-Speed_at_angle*cos(angle)

    set velocity_y to velocity_y-Speed_at_angle*sin(angle)

    or to bounce do:

    set velocity_x to velocity_x-K*Speed_at_angle*cos(angle)

    set velocity_y to velocity_y-K*Speed_at_angle*sin(angle)

    Where K is 1 for no bounce to 2 for fully elastic bounce.

    I have an example of it in the first capx in this topic:

    and a more advanced version of the walls can be found here:

    But there are probably other ways.

  • Alpro

    Having a fixed flight time and having a different launch angle isn't physically accurate since it requires each cannonball to have a different gravity.

    Do do a launch here are the formulas. "angle" is the launch angle and t is the flight time. You'll need to change event 5 to use ball.gravity instead of gravity in the equations.

    ball set vx to (x_target-x_start) /t

    ball set vy to ball.vx*tan(angle)

    ball set gravity to 2*(y_target-y_start-ball.vy*t)/t^2

    bear13

    Probably no, the turret behavior is for straight shots, but with some creativity you possibly could do something similar with events.