Search Unity

  1. Welcome to the Unity Forums! Please take the time to read our Code of Conduct to familiarize yourself with the forum rules and how to post constructively.
  2. We have updated the language to the Editor Terms based on feedback from our employees and community. Learn more.
    Dismiss Notice
  3. Join us on November 16th, 2023, between 1 pm and 9 pm CET for Ask the Experts Online on Discord and on Unity Discussions.
    Dismiss Notice

[RELEASED]Basic Weapon Pick-up

Discussion in 'Works In Progress - Archive' started by dibdab, Apr 18, 2016.

  1. dibdab

    dibdab

    Joined:
    Jul 5, 2011
    Posts:
    976
    been workin on a weapon pickup system with unity iK.

    it can set the weapon-holding pose for a weapon identified by its tag

    assetstore link: https://www.assetstore.unity3d.com/en/#!/content/61254

    it has:
    weapon pick-up and drop
    GifCapture-201604181915569922.gif
    weapon aiming
    GifCapture-201604181913516600.gif
    bullet damage
    GifCapture-201604181925430176.gif
    grenade throwing and damage
    GifCapture-201604181822523047.gif

    the bullets are physical, and bullets are counted for every gun

    planning to release it on the assetstore and if you have questions, requests, I'd like to hear it
     
    Last edited: Sep 27, 2016
    CrisisSystem likes this.
  2. dibdab

    dibdab

    Joined:
    Jul 5, 2011
    Posts:
    976
    for now the weapon types are>
    automatic rifle
    pistol
    grenade

    planning to include shotgun and sword

    the pistol looks like this
    GifCapture-201604181941587596.gif

    after enabling projection on the ragdoll, it maybe looks a bit better
    GifCapture-201604181950574966.gif
     
    Last edited: Apr 18, 2016
  3. CrisisSystem

    CrisisSystem

    Joined:
    Oct 7, 2015
    Posts:
    124
    Man, he is taking those right in the junk!

    Looking good man, keep it up!
     
    LudiKha likes this.
  4. dibdab

    dibdab

    Joined:
    Jul 5, 2011
    Posts:
    976
    here's how it look with a rifle
    GifCapture-201604191120152147.gif

    also there's an idle pose and aiming pose
    GifCapture-201604191621175640.gif
    GifCapture-201604191621377840.gif

    included variables (bool) fadeOutIK and fadeInIK
    if you want to go use only animations

    GifCapture-201604191613241353.gif
     
    CrisisSystem likes this.
  5. dibdab

    dibdab

    Joined:
    Jul 5, 2011
    Posts:
    976
    readme1.jpg
    readme2.jpg
     
    Last edited: May 11, 2016
  6. dibdab

    dibdab

    Joined:
    Jul 5, 2011
    Posts:
    976
    uploaded 1.1 (with Unity5.01 version)

    changes:
    - full ik (+ elbows, feet, knees)
    - only one tag for weapon ("weapon")
    - attachpoints determined by weapon names
    - the rotation data is determined on the weapon object
    - can do static ik pose (tag: "no_move")
    - ik weights and objects determined by ik pose content*
    - throwing is now event-driven
    - 2 more weapons (sword + baseballbat)

    *which means eg. if there is ikLFoot obj in the iK pose, then iK is applied to the left foot

    only these tags are needed:
    tags.jpg

    GifCapture-201605111638107563.gif

    GifCapture-201605111639339864.gif
    GifCapture-201605111642198067.gif
    GifCapture-201605111641194166.gif
     
  7. EETechnology

    EETechnology

    Joined:
    Aug 15, 2015
    Posts:
    185
    Very Nice!
     
    dibdab likes this.
  8. dibdab

    dibdab

    Joined:
    Jul 5, 2011
    Posts:
    976
    now workin on Basic Fighting System
    which is animated-reaction action / triggered ragdoll

    and works together w BasicWeaponPickup
    GifCapture-201605200112114537.gif
     

    Attached Files:

    Last edited: Jun 15, 2016
  9. dibdab

    dibdab

    Joined:
    Jul 5, 2011
    Posts:
    976
    of course theres reaction too, theres damage. ragdollHits.cs
    GifCapture-201605200123542806.gif
     

    Attached Files:

  10. dibdab

    dibdab

    Joined:
    Jul 5, 2011
    Posts:
    976
    this is how easily you can switch from iK pose to animation in BasicWeaponPickup:

    GifCapture-201605202236359606.gif
    in Update
    Code (CSharp):
    1.     if (Input.GetKeyDown( KeyCode.R ) ) {
    2.        fadeOutIK = true;
    3.        animator.SetTrigger("roll");
    4.      }
    ............
    also if you add the tag "weapon" under OnCollisionEnter in ragdollOn.cs
    GifCapture-201605202237094007.gif
     
    Last edited: Jun 16, 2016
  11. dibdab

    dibdab

    Joined:
    Jul 5, 2011
    Posts:
    976
    been working on adding some things

    shooting through glass
    GifCapture-201606152048126784.gif
    pickup not just for weapons
    GifCapture-201606151430115437.gif
    holstering gun
    GifCapture-201606152150510354.gif

    wip inventory
    GifCapture-201606161747491885.gif
     
    Last edited: Jun 16, 2016
  12. dibdab

    dibdab

    Joined:
    Jul 5, 2011
    Posts:
    976
    inventory's done (gun holster and change)

    it's better organized now
    and no need to assign on script

    nustruct.jpg
     
    Last edited: Jun 25, 2016
  13. dibdab

    dibdab

    Joined:
    Jul 5, 2011
    Posts:
    976
  14. dibdab

    dibdab

    Joined:
    Jul 5, 2011
    Posts:
    976
    new version ready to go

    added minigun and rpg
    GifCapture-201606252034152332.gif

    GifCapture-201606252035165943.gif

    and the price is going to be a bit raised
     
    tylerguitar75 likes this.
  15. dibdab

    dibdab

    Joined:
    Jul 5, 2011
    Posts:
    976
    improved cWalker, added running and strafing
    GifCapture-201608251916237819.gif

    GifCapture-201608251922113024.gif
    now animations are called w animator.CrossFade
    ragdoll is not separate
    cWalker.jpg

    and getting up
    GifCapture-201608281903466610.gif
     
    Last edited: Aug 28, 2016
    tylerguitar75 likes this.
  16. dibdab

    dibdab

    Joined:
    Jul 5, 2011
    Posts:
    976
    the new version is out

    ___________________
    ikPoses for Modern Russian AR
    https://www.assetstore.unity3d.com/en/#!/content/46033

    scale factor 0.12
    setting up the weapon:
    collider (/coll/collx) + rigidbody + bulletsingun.cs
    + add 'weapon' tag

    put the prefabs under rHand (the attachpoint) and ikPoses (hip/ikPoses/shoot and idle)

    otherguns1idle.jpg otherguns1shoot.jpg
     

    Attached Files:

  17. DevMember

    DevMember

    Joined:
    Aug 6, 2016
    Posts:
    45
    Awesome work dibdab *_*
    My question, is it compatible
    with the FPS-Contoller?
     
  18. dibdab

    dibdab

    Joined:
    Jul 5, 2011
    Posts:
    976
    cheers, I don't think so.

    it is a third-person solution. it attaches weapons to hands and uses standard unity IK (for now), so it needs a humanoid skeleton.
     
  19. DevMember

    DevMember

    Joined:
    Aug 6, 2016
    Posts:
    45
    Okay, understood
     
  20. angel_m

    angel_m

    Joined:
    Nov 4, 2005
    Posts:
    1,160
    Does it work with legacy animations of character models?
     
  21. dibdab

    dibdab

    Joined:
    Jul 5, 2011
    Posts:
    976
    not this version.

    the next version might support generic (and legacy)
     
  22. angel_m

    angel_m

    Joined:
    Nov 4, 2005
    Posts:
    1,160
    Ok thanks, I will expect for that.
     
  23. dibdab

    dibdab

    Joined:
    Jul 5, 2011
    Posts:
    976
    well. mixed news.
    I was thinkin of using SA FullBodyIK, but looks like won't be able to pull off what was planned.

    generic kinda works, but there are issues. like the lefthand rotation (see pic) though it might be caused by Wrist Limit Enabled. also the base is not the animation, so it's not clean, but solved/constrained.
    even if everything's thicked off, it still solves.*

    if Nora reads this I can send him/her the packagel, if interested.

    GenSoldier.gif

    though simple rotations can be done in lateupdate
    gensoldier2.gif

    *edit.:
    okay, if effector weights are 0, animated is alright
    gensoldier3.jpg
     
    Last edited: Oct 23, 2016
  24. dibdab

    dibdab

    Joined:
    Jul 5, 2011
    Posts:
    976
    managed to implement this hip and shoulder rotation

    rShoulders.gif
     
  25. dibdab

    dibdab

    Joined:
    Jul 5, 2011
    Posts:
    976
    ran into problems w SA FullBodyIK

    left hand position problems
    foot stabilization needed with hip rotation
    choppy animation w lateupdate rotations

    so I got back to unity standard iK

    and lateupdate rotations + ik rotations work fine
    bwp.gif
     
  26. dibdab

    dibdab

    Joined:
    Jul 5, 2011
    Posts:
    976
  27. RizeoftheSummonds

    RizeoftheSummonds

    Joined:
    Nov 5, 2016
    Posts:
    49
    That's cool.
     
    dibdab likes this.
  28. dibdab

    dibdab

    Joined:
    Jul 5, 2011
    Posts:
    976
    been workin on Basic Fighter
    not workin as intended, buggy and lot of things unfinished
    made in 5.0
    check the basicfighter beta [win, 12M ]
    play windowed
    updated!:
    http://www.mediafire.com/file/n11lw0ovrcltrix/basicfighterbetademo.zip

    keyboard: C crouch R run 1 - 5 knockin 6 - 8 kickin
    gamepad: knock> jumpbutton + W/N/S/E kick> shootbutton + W/N/S/E

    Z for controller reset

    animations by mixamo, 3dbrothers and unitychan

    basicfighter.jpg
     
    Last edited: Nov 9, 2016
  29. dibdab

    dibdab

    Joined:
    Jul 5, 2011
    Posts:
    976
    proper beta demo (see link above)

    different damagePoints for every attack
    attack only registered if attackanimation
    hits registered on rigidbodies (kinematic and nonkinematic)

    basicfight.gif
    basicfight3.gif
     
    Last edited: Nov 10, 2016
    DevMember likes this.
  30. dibdab

    dibdab

    Joined:
    Jul 5, 2011
    Posts:
    976
    basic weapon update shaping up.

    one problem is quickly running out of buttons (but yet can keep it in check. later versions will get two new axis in)
    and its official. still only for humanoid rigs.

    already implemented:
    2 GAMEPAD SUPPORT!
    upperBodyRotation
    jumping
    checkPose.cs (for checking existin ikPoses and creating new ones)

    probably will have to go with some ActionMode selector button, because quit possible that couldn't set it to all knocks/kicks/blocksn evades (for 1 axes controller)
    I could use doChangeP, but that would animation based, for stances, for left/right switches etc doFire - doCharge could be weapon based.

    Basic WeaponPickup controlscheme
    controls1.jpg
    controls2.jpg
     
    Last edited: Nov 18, 2016
  31. dibdab

    dibdab

    Joined:
    Jul 5, 2011
    Posts:
    976
    5.5beta10 hanged up when importing 5.00project.

    update: I was able to test in 5.5 and seems like the animator.CrossFade problem does not appear anymore (so prior to 5.5 should be changed to animator.Play)
    projects don't import into 5.5, had to be rebuilt

    in 5.42

    crossfade sometimes not working I think is because
    5.5.0b5 Release Notes (Full)
    Animation: Animator.CrossFade is now interruptable like Animator.CrossFadeInFixedTime (798560)

    might be lookin at a bug. iK switched on in idle state.
    bug.jpg
    gamepad buttons function different as in 5.00


    DOWNLOAD windows demo
    http://www.mediafire.com/file/cu5dx8fw8w62m15/bwpbeta542_demo.zip
    test is, report it

    there's a simple keyboardControl.cs

    L for reset Controller
    F for get-up
    Code (CSharp):
    1.         if ( Input.GetKeyDown( KeyCode.Z ) ) pickupbasic.doPickup=true;
    2.         if ( Input.GetKeyDown( KeyCode.X ) ) pickupbasic.doFire=true;
    3.         if ( Input.GetKeyDown( KeyCode.G ) ) pickupbasic.doDrop=true;
    4.         if ( Input.GetKeyDown( KeyCode.Y ) ) pickupbasic.doIdleP=true;
    5.         if ( Input.GetKeyDown( KeyCode.H ) ) pickupbasic.doHolster=true;
    6.         if ( Input.GetKeyDown( KeyCode.V ) ) pickupbasic.doUse=true;
    7.         if ( Input.GetKeyDown( KeyCode.T ) ) pickupbasic.doThrow=true;
    8.         if ( Input.GetKeyDown( KeyCode.P ) ) pickupbasic.doChangeW=true;
    9.         if ( Input.GetKeyDown( KeyCode.B ) ) pickupbasic.doChangeP=true;
    10.         if ( Input.GetKeyDown( KeyCode.Q ) ) pickupbasic.fadeOutIK=true;
    11.         if ( Input.GetKeyDown( KeyCode.W ) ) pickupbasic.fadeInIK=true;
    12.  
    13.         if ( Input.GetKeyDown( KeyCode.C ) ) cWalker.crouchin=true;
    14.         if ( Input.GetKeyDown( KeyCode.R ) ) cWalker.runnin=true;
    15.  
    16.         if ( Input.GetKeyDown( KeyCode.U ) ) rotateUpBody.doRL1=true;
    17.         if ( Input.GetKeyDown( KeyCode.I ) ) rotateUpBody.doRR1=true;
    18.         if ( Input.GetKeyDown( KeyCode.O ) ) rotateUpBody.doRL2=true;
    19.         if ( Input.GetKeyDown( KeyCode.K ) ) rotateUpBody.doRR2=true;
    20.         if ( Input.GetKeyDown( KeyCode.H ) ) rotateUpBody.doRL3=true;
    21.         if ( Input.GetKeyDown( KeyCode.J ) ) rotateUpBody.doRR3=true;
     
    Last edited: Nov 19, 2016
  32. dibdab

    dibdab

    Joined:
    Jul 5, 2011
    Posts:
    976
    realized for animations feet stabilizer is needed
    and workin further on ikAnimator, and can the animation be modified by frame
    with ik and rotations

    also merged old hero strafe anims with unmoving upper body w Scene Motion Recorder and Skele
    animspeed.gif
    and introduced animspeed to cWalker. out of necessity but
    I think its a neat little thing. look at how the hero strafe anim is 2x speed
    animspeed.jpg

    probably I missed it before (and now experiencing in a test project)
    Code (CSharp):
    1. void switchoffCap()
    2. {
    3.         canWalk = false;
    and
    Code (CSharp):
    1. void switchonCap()
    2. {
    3.         canWalk = true;
    is needed

    _________
    also turn on spot (when idle and vertical -)
    basicfighterturn.gif
     
    Last edited: Nov 25, 2016
  33. Samuel411

    Samuel411

    Joined:
    Dec 20, 2012
    Posts:
    646
    Wow talk about over-engineering. I thought this was just basic weapon pick up system but it seems like its a whole third person shooter system? That's cool I guess it just looks sort of un-polished but code wise I think it does all that it needs to, after all its an asset not a game, people will need to add their own polished animations, etc.
     
  34. dibdab

    dibdab

    Joined:
    Jul 5, 2011
    Posts:
    976
    the pick-up is working alright, but since I'm updating cWalker, which is the foundation of the third-person system, I can include the new features of it in future versions.
    while developing a third-person shooter system, probably encounter problems that need to overcome, so if I can, I'll include those too, like goingRagdolled and gettingUp (part of cWalker.cs)

    the main one, the pickup system is the pickupbasic.cs, which controls ikPoses, pickups, holstering, getting weapon data, keeping track of weapons - so it's quite a couple things needs to be dealt with.
    pickupbasic.jpg

    also might be confusing because I started to talk about BasicFighter, I'll have to start a new thread for that.

    yeah, and sorry about unpolished look. the good side is that I guarantee it's the simplest code there is :)

    upd.: I realized for up/down movement is best to include two joints, because with weapon holding w 2 hands man turns in waist, and with handgun only the shoulder.
     
    Last edited: Nov 28, 2016
  35. dibdab

    dibdab

    Joined:
    Jul 5, 2011
    Posts:
    976
    hey, I thought I give out 3 x Basic Weapon Pickup! :)
    until I tinker with the update
    think of me when you sweep in the royalties ;)

    here are the vouchers you can check in in the store:
    ASV-UER7-UT4P-G3VD-6JKE-GYUM
    ASV-AJEW-YJCA-GXKX-FKXV-CP37
    ASV-7MQ7-EFW7-QMQL-TDH6-NLTK

    shoot them 3D bastards!:cool:
     
  36. ZhavShaw

    ZhavShaw

    Joined:
    Aug 12, 2013
    Posts:
    168
    Aww I missed out on a voucher :p
    Looks like a great asset!
     
  37. dibdab

    dibdab

    Joined:
    Jul 5, 2011
    Posts:
    976
    just realized ikroot can be used to moving the hip

    and its possible to do poses with standard unity ik
    and record them (as prefabs or anim)

    ikanimatorstandardfullbody.jpg ikanimatorstandardfullbody2.jpg ikanimatorstandardfullbody3.jpg

    another good idea would it be it instantiate it rigidbody rag with fixedjoints and hingedjoints

    pretty easy to make poses and copy poses as prefabs

    iksurfcopy.jpg


     

    Attached Files:

    Last edited: Feb 13, 2017
  38. dibdab

    dibdab

    Joined:
    Jul 5, 2011
    Posts:
    976
    experiments in double axes

    AnimationIKE.gif
    surfer idea
    AnimationIK.gif

    another surfer pose
    animationIK5.jpg
     
    Last edited: Feb 13, 2017
    DevMember likes this.
  39. DevMember

    DevMember

    Joined:
    Aug 6, 2016
    Posts:
    45
    I like to follow your thread :--)
    Really interesting views inside your work you give to us.
    Reminds me a lil bit to Garry's Mod xD
     
    dibdab likes this.
  40. dibdab

    dibdab

    Joined:
    Jul 5, 2011
    Posts:
    976
    thanks, mi just do simple things, try-and-fail-and-try. no complex things.
    keepin what works, extending on that...

    I was thinkin what I can post next.
    this is how I extended standard IK (for car iktargets for driving)

    there's also gameobject-identification simplyfied by using names* to get to transform on the tree. theres two cars with 2kinds of tree structure.

    *probably can be replaced by simply using string in the referencing scripts
    rename makes no problem w Unity, only renaming skeleton transforms is problematic
    though I'm not sure where I use them, I might changed all to transform reference (to theres no 'hardwired' reference, enterexit detects man by 'Player' tag**, has the iktargets on, and cDriver calls Ik script of man by its place when seated and enterexit adds the ikPlus elements)

    **probably will change this to 'man' and look for keys to vehicles (checkin strings in Keys.cs on walker)

    iksetup.jpg
     
    Last edited: Feb 21, 2017
  41. dibdab

    dibdab

    Joined:
    Jul 5, 2011
    Posts:
    976
    the future plan is to support custom animations
    but most of the time those need ik adjustment too

    like left hand w this anim
    lefthandik.jpg

    and this is how it looks when ikTargets
    parented under man
    bwpanimtman.gif

    parented under hip
    bwpanimthip.gif

    parented under gun
    bwpanimtgun.gif

    and lateupdate rotations work fine too
    bwpanimtgunR.gif

    so the gun prefabs need to have iktargets if want to use with custom animations
    and pickupbasic needs to 1. know if custom anim is to be used, 2. find and switch in iktargets
     
  42. dibdab

    dibdab

    Joined:
    Jul 5, 2011
    Posts:
    976
    okay I need to update this asset soon

    and one more thing to show how easy is to extend cWalker
    I wanted to add one more strafe variation and its just need one more variable animselectws

    Code (CSharp):
    1.                if(animselectws==0) animator.CrossFade("walkR",0.1f);
    2.                if(animselectws==1) animator.CrossFade("walkR2",0.1f);
    3.  
    and this can be changed with key control (or else)
    bwpstrafe.gif
     
  43. dibdab

    dibdab

    Joined:
    Jul 5, 2011
    Posts:
    976
    the new update is up. version 1.4

    just noticed that unity tends to loose objects in scene if they are switched off and then opened with another unity version.

    here's the iktargets prefab seen in #38.
    just put it under hip and drop them into the ik script
     

    Attached Files:

  44. dibdab

    dibdab

    Joined:
    Jul 5, 2011
    Posts:
    976
    new update is coming along. this is the biggest change, it'll be version 2.0, the whole thing is being reworked.

    you can use custom animations,
    for weapon animations, and basic animations too.

    and you can use ANY NUMBER OF ANIMATIONS
    and can select between them runtime.
    nubwp2.gif

    nuanimcontrol.jpg
     
  45. dibdab

    dibdab

    Joined:
    Jul 5, 2011
    Posts:
    976
    added transitional anims
    between run and idle, run and walk
    runtransitions.gif
     
  46. dibdab

    dibdab

    Joined:
    Jul 5, 2011
    Posts:
    976
    improved UpBody rotations
    aimrotations.gif
     
  47. dibdab

    dibdab

    Joined:
    Jul 5, 2011
    Posts:
    976
    textured the rifle and the AK47
    newtex.jpg
     
  48. dibdab

    dibdab

    Joined:
    Jul 5, 2011
    Posts:
    976
    basic weapon pickup 2.0 is up

    in 2.01
    added turn 90 and turn 180 when standing
    added avoid R and L when running
    bullet shooting style now in enum
    shootstyle.jpg
     
    Last edited: Apr 19, 2017
  49. dibdab

    dibdab

    Joined:
    Jul 5, 2011
    Posts:
    976
    yesterday I bought Low Poly Soldiers




    fixed and improved some things that will be in 2.01 soon

    and the price should be 22
     

    Attached Files:

    • wm4.jpg
      wm4.jpg
      File size:
      68.1 KB
      Views:
      1,083
    Last edited: Apr 19, 2017
  50. dibdab

    dibdab

    Joined:
    Jul 5, 2011
    Posts:
    976
    working on vehicle and shooter project (which will be based on cWalker 2 root-motion version and includes door damage, glass damage, explosion damage, weapon damage).

    will be upgradeable

    now the preferred method is to use precise animations, no ik.
    if the attach position is known, animations for weapon-hold, firing can be made customized to weapon in Unity.

    this is how is done:
    1. use IK / lateUFix to modify animation*
    2. save it with SceneMotionCapture
    3. convertable to humanoid .dae with Skele

    *ik for foot stabilizing / hand position
    lateupdate for rotation


    lateUpdate fix
    Code (CSharp):
    1. using UnityEngine;
    2. using System.Collections;
    3.  
    4. public class
    5. lateUFix : MonoBehaviour {
    6.  
    7.     public bool isOn;
    8.  
    9.     [Space(5)]
    10.  
    11.     public Transform realhip;//real hip R in lateUpdate
    12.     public Transform latehip;//transform controlling realhip
    13.  
    14.     public Transform realspine1;
    15.     public Transform latespine1;
    16.     public Transform realspine2;
    17.     public Transform latespine2;
    18.     public Transform realspine3;
    19.     public Transform latespine3;
    20.     public Transform realshoulder;
    21.     public Transform lateshoulder;
    22.  
    23.     public bool isset;
    24.  
    25.     void Update () {
    26.  
    27.         if (!isset) {
    28.             if (realhip)
    29.                 latehip.rotation = realhip.rotation;
    30.             if (realspine1)
    31.                 latespine1.rotation = realspine1.rotation;
    32.             if (realspine2)
    33.                 latespine2.rotation = realspine2.rotation;
    34.             if (realspine3)
    35.                 latespine3.rotation = realspine3.rotation;
    36.             if (realshoulder)
    37.                 lateshoulder.rotation = realshoulder.rotation;
    38.  
    39.             isset = true;
    40.         }
    41.  
    42.     }
    43.  
    44.     void LateUpdate () {
    45.  
    46.  
    47.         if(isOn){
    48.  
    49.  
    50.             if(realhip) realhip.rotation = latehip.rotation;
    51.  
    52.             if(realspine1) realspine1.rotation = latespine1.rotation;
    53.             if(realspine2) realspine2.rotation = latespine2.rotation;
    54.             if(realspine3) realspine3.rotation = latespine3.rotation;
    55.             if(realshoulder) realshoulder.rotation = lateshoulder.rotation;
    56.  
    57.     }
    58.  
    59.     }
    60.    
    61.  
    62. }

    without ik / with ik
    smcdae.gif

    download pistol holding anims and humanoid dae

    aimpistol1-2anim
    aimpistol1-2dae

    aimpistol0.dae

    smcpistol1.jpg
    if you want the 2.01 version of scripts get in touch (don't know when will have time to test and submit them)