Posted By
|
Message
|
Ecstazy
Registered 04/01/2002
Points 179
|
31st December, 2008 at 14:20:42 -
Hello, once again I have a question for you.
I'm trying to make this mechanical arm attached to a wall that follows the player, the mechanical arm is made out of 5 base pieces and a pincer in the end, and the first piece is attached to one spot on the wall.
I think the main problem is keeping all the pieces connected together, and I'm a bit confused on how to pull it off. I set an active spot on where one piece connects to the next, and I guess it requires altering the angle of each object.
The thing is that I'm also trying to make it snake-like, so that it will be flexible and if the arm goes and up and then down, only the front will go down and pull the rest, instead of everything moving in the same direction like a single piece of metal.
Amongst Strangers
http://www.create-games.com/project.asp?id=1445
|
Sketchy Cornwall UK
Registered 06/11/2004
Points 1971
|
31st December, 2008 at 17:35:02 -
http://www.create-games.com/article.asp?id=1866
You were kind of vague about what you wanted.
n/a
|
Pixelthief Dedicated klik scientist
Registered 02/01/2002
Points 3419
|
31st December, 2008 at 17:46:55 -
think of each piece as a long rectangle, and put the action spot & hot spot at alternate ends, like this:
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
X A H X
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Now, in the events, do this:
Always: Put Arm#5 at Action(0,0) of Arm#4
Always: Put Arm#4 at Action(0,0) of Arm#3
......
etc
Give each object either an angle or 32 directions animation, and then at gameplay, rotate ALL OF THEM towards the player, at slowing speeds. For example, if Arm#5 was the closest one to the body of the enemy, and Arm#1 was the "fist", then do this:
Always: Rotate Arm#5 towards Player(0,0) at speed 3
Always: Rotate Arm#4 towards Player(0,0) at speed 6
....
Always: Rotate Arm#1 towards Player(0,0) at speed 15
You can do this via the Direction Calculator extension, available at the clickteam extension archive. Now thats assuming you use the 'animation directions' approach. If you want to do it via angles, you can use the "Angle Calculator" extension, which should work like a charm.
Basically each piece is tied to the previous piece at a joint, and rotates from there.
Edited by Pixelthief
Gridquest V2.00 is out!!
http://www.create-games.com/download.asp?id=7456
|
Ecstazy
Registered 04/01/2002
Points 179
|
2nd January, 2009 at 00:34:11 -
Thanks for the help guys!
Pixelthief: Your idea seems to work...more or less. The problem is that I can't find a way to keep the arm attached to the wall. If I link the objects the way you said, I get something like a snake that crawls after the player, and if I do the opposite everything stays still and only rotates.
I tried limiting the condition with something like: Distance between ArmUnit5 (the one attached to the wall) and ArmPincer (the "fist") smaller than 250px (the distance between those 2 pieces if the arm is completely stretched) AND the position of the piece attached to the wall is certain X and Y values.
I'm also not sure what you mean by having them rotate at a certain speed. I ended up using angles, and the only idea I had in mind is giving all objects ball movement in different speeds (which kind of works I guess).
Here's what I have so far, without various failed attemps:
http://solid.flam.free.fr/blah/mech_arm_code.png
As it is I have a snake-like creature floating after the player while the piece connected to the wall stays there all alone.
(I used a different object that I had already in the frame to calculate the angle between 2 objects and added the "look at" events to get the pieces moving. I then realized only the first one was enough)
Sketchy: Sorry about the vague question, I wasn't sure how to explain it. I guess I could've said it's a tentacle-like movement.
I read the article, it was pretty interesting and I understood the whole curves subject, but I'm not really sure how to put it into code. Also it seems that with my 6 pieces arm it's a REALLY long expression (the 4 points code was messy enough), it seems somewhat inefficient.
Amongst Strangers
http://www.create-games.com/project.asp?id=1445
|
Sketchy Cornwall UK
Registered 06/11/2004
Points 1971
|
2nd January, 2009 at 18:31:04 -
A few things seem "wrong" with that, to me.
Firstly, the event order - it should probably go more like;
1.) rotate section 1 towards player,
2.) position section 2 at 0,0 from section 1's action point,
3.) rotate section 2 towards player,
4.) position section 3 at 0,0 from section 2's action point...
Secondly, all the segments instantly turn to face the player, instead of gradually rotating.
Here's my attempt:
http://cid-b1e7ee094271bbda.skydrive.live.com/self.aspx/Public/Arm.mfa
There are still several problems;
1.) The rotation of each arm segment is absolute - it should strictly be relative to the previous arm segment's angle.
2.) Arm segements can overlap, which looks bad
3.) It would be more efficient if the arm segments were a group / duplicates (would cut down on duplicate events).
It all depends on how much effort you want to put in Vs the results you want.
BTW: I gave up using an extension, as it didn't allow me to use a float as rotation speed, when rotating towards an angle.
The other thing I thought might be cool, is if the last arm segment were telescopic - it wouldn't be that much more effort to add, and it could look pretty neat
n/a
|
Assault Andy Administrator
I make other people create vaporware
Registered 29/07/2002
Points 5686
|
4th January, 2009 at 02:37:23 -
I think you should look into inverse-kinematics, or using one of the physics extensions to reproduce this. There was a really really good example of inverse kinematics for MMF 1.5, but from memory it was reported that it was no longer working in MMF2. You could try using a physics object with joints and restrictions to 'push' the parts around.
* I just found the download for the inverse kinematics engine. I had posted it before and noticed that infact doesn't work at all in MMF2:
http://www.create-games.com/forum_post.asp?id=225625
If you really really really want it, you should try submitting the file to a member of clickteam because it worked so well in MMF 1.5
Creator of Faerie Solitaire:
http://www.create-games.com/download.asp?id=7792
Also creator of ZDay20 and Dungeon Dash.
http://www.Jigxor.com
http://twitter.com/JigxorAndy
|
Ecstazy
Registered 04/01/2002
Points 179
|
5th January, 2009 at 22:45:27 -
Thanks Andy, I'll see what can be done with that.
Sketchy your example crashes when I try to run it but I see what you did there, thanks a lot!
Amongst Strangers
http://www.create-games.com/project.asp?id=1445
|
|
|