No announcement yet.

Spinning Robot Painter

  • Filter
  • Time
  • Show
Clear All
new posts

    Spinning Robot Painter

    I'm almost done making my first map, but for the life of me the last thing I wanted to do is the very thing that's brought me unstuck... ffs... lol

    Simple really, i wanted the Robot Painter from the level DM-CarbonFire in my map, but with a few modifications.

    As you can see, i've put a Shield Belt in it's centre. The idea is to have the painter spinning around the belt so as to make it a bit more difficult to get.

    I'm not very good in Kismet let alone Matinee. I did manage to get it to rotate on it's axis, but once you play test the map it remains stationary.

    Need to have it start spinning ONLY when the Shield Belt spawns.

    Also I can not get the "COLLIDE_BlockAll" command to stick to it, you can still walk throught the sides (Blades), wich kinda defeats it's purpose, because you should be only able to get the shield if you time it right and grab it as it spins round. So if you hit the side blades you will take damage like say 25 health off.

    Can anyone help me, i'd settle for the basic version of a constantly spinning painter, if the trigger and take damage blocking collision stuff, can't be done.

    Please, I'm in n00bland.. so be generous in your descriptions.


    Okay, I hope this helps.
    First you want your event to fire off when the belt spawns so Select the belt and then go into Kismet right click on an empty area, and New event using Shield belt and so on... then select Pick up Status or something like that.

    Set what you want to happen when the Pick up is available and taken. now, keep in mind that in Kismet,there are several ways to make what you want work so there may be an easier way than my suggestion. I'm not at my desktop so this is just me thinking about stuff.

    So I would suggest to not rotate your mesh in its properties. Instead convert to a mover/interpactor and rotate it 360 degrees using matinee (set the time for the rotation to what you want of course for it's speed). Set the matinee to looping and connect your available node to the play for matinee and the taken node to stop.
    That should set it to move and stop when available and taken.

    At the moment I can t think of the collision thing... may have to go to my desktop downstairs to look at Kismet to see how that may work but right now just bored and cant sleep so I'm on the internets

    Hope this helps some for now.


      I just thought of how the above setup, while it may work, may become an issue in multiplayer games where two players go for the pickup at the same time. Or maybe I'm just not thinking straight.

      Anyways, just wanted to add that you should be able to do with the default collisions for the static mesh. However all this will do is it will interact with the player when they hit it, they wouldn't take any damage.

      For the damage, this could work.
      U may have to first enclose each blade using your builder brush. I would suggest using a small cube brush and vertex edit it. That basically means extrude the brush in small portions to cover each blade. When youre done with that add a dynamic physics volume (i think that's what it's called) to each of the blades. After placing them, you should attach the brushes to your meshes and check hard attach. You should also set what the amount of damage received to players would be.
      Now selecting one of the volumes go back to kismet and add a new matinee (not the same one as earlier since this would have different settings). After adding a new empyt group and all that add a property track and when the bubble pops up select drawscale.
      Basically what youre going to do is set the time in this matinee as you please and set the values of the key frames from 0-1 (first keyframe = 0; second = 1). Remember after keyframing to select your other volume and create new obj var on the group.

      Set it so that when the belt is available it plays (which means the volume comes up and covers the blades). the volumes are hard attached to the mesh so the movement should be taken care of, i think. Then set the taken node to reverse.

      After reading thru this long winded stuff I just typed, what should happen is
      Shield belt spawns, mesh starts spinning, physics volume comes up around blades. So the collision of the mesh causes players to hit it and the volume delivers the damage. Belt is taken and everything is reset.

      Like I said, in Kismet, there are several ways to do stuff, I just go for what is obvious to me for whatever I am trying to do. So someone else may have an easier way to do this.


        OK this is what i have set up. This rotation works when I attach the "Level Start" event. I set up the Matinee according to Hourances Tutorial;


        It's stops working when i try to attach and configure the "Pick Up Status Change" event.

        So the funny this is that it spins twice in 2.5 seconds, then it reverses to the start and starts again. It won't loop continuosly even after i add the bLooping property.

        What am I doing wrong?


          This is all you need.


          In the matinee you need to slide the time track down to about 0.75 seconds. Put the time slider on 0 and select the movement track and add a key. Put the time slider on 0.75 and add a second key and with this key still selected rotate the interpactor 360 degrees. Select both of the keys, right click one and change the interp mode to linear so the interpactor has a constant spin.

          Come out of matinee and check bLooping in its properties bottem left window of Kismet.

          As for the blocking and damage I edited the red builder brush to the shape of a blade and added a dynamic blocking volume and attached it to the interpactor, then did the same for the other blade. This works ok for knocking the player away.

          I tried using a touch event in Kismet with the dynamic blocking volumes and a cause damage node, you need an object variable linked to the instigator of the touch event and the target of the cause damage. But I found this unreliable it didn't do damage every hit. A slightly bigger dynamic trigger volume would probably work better.

          I think thats enough info to move you forward.


            Zoo is right, you only need to connect the Pickup status to the matinee nothing else.
            Maybe connect the level startup to stop to make sure it's not moving when the level starts - until the first spawn of your 100 (I always do that personally just for efficiency but it's not needed.)

            IMHO, Using a dynamic blocking volume and having to trigger it is a longer route. The dynamic physics volume would be better since you can set in its properties how much damage it would do upon impact in it's properties. That way all you have to worry about is making it appear and disappear.

            I used the same volume in the map I'm working on now and it works fine.

            On another note though, if you want to use the dynamic blocking volume instead of the painter's default collision (which actually would be a better idea since there could be trouble with the ragdoll collisions) you can use both. the blocking volume would take care of the collisions and the physics volume does the damage.


              That mesh has no collision by default, that is the only reason I was using the dynamic blocking volume. The other alternative is to move it to your level package and give it some collision.

              The problem with the physics volume is it does damage per second, but if you use a touch event with a cause damage in Kismet the player will only receive damage each time they touch the volume.


                Yea, I actually decided to go take a look at this and just noticed that mesh has no collisions.

                Anyways, download this,

                It's an unpublished gray map of what you're trying to do.
                I didnt have to animate the physics volume... but anyways, I used both the physics and blocking volumes (both dynamic) hard attached to the painter.

                When the painter isnt spinning it does no damage when you touch the blades, it only does damage when the blades are spinning and the player comes in contact with it.

                You can of course modify the damage per impact to what you want it to be.

                Also, you would notice I set the taken node to pause, not stop. It just looked strange that no matter the position of the blades when you take it, if it stops, it snaps back to its origin position. Setting it to pause when taken makes sure it stops at that point its at when it's taken. It also starts spinning from the same point when available again.

                Hope it helps. GL.


                  A big thanks to both of you for your help, it's now working just how I want it.

                  The map has gone into online BETA testing by my clan.

                  Should be ready for public release very soon.

                  I really appreciate the help you both gave me, not only do I understand it all a bit better, it works just how i want it to.



                    set Stop on Encroach to False.

                    Make sure the tangents in the rotation channel of the movement track (can be split into separate channels with right-click) are linear, not spline-type. You can set the key values manually to 0 and 360 here, which I find easier than trying to barely get 360 degrees without getting clamped to 0 using the widget in the level editing viewport like you probably have been doing.