Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 12 Next capture
2021 2022 2023
1 capture
12 Jun 22 - 12 Jun 22
sparklines
Close Help
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
avatar image
0
Question by electricco20 · May 07, 2020 at 04:44 PM · c#animationanimatormatching

MatchTarget and Looping Animations?

Hello,

I'm having an issue with MatchTarget. The same code I have here is working great on interactions where the user hits a button and a single animation is triggered. However, on these where the user holds down the mouse button and then, in the case of pushing/pulling, it doesn't work properly.

For the first of the two under the Update() function, the expected result is for the character to match the target when the mouse is held down and for the first quarter of the "grab animation". However, this only works when I set the start and values to something way higher like 1f and 2f and, in that case, it only works after the first time the mouse button is clicked - never on the first time (I'm assuming because it starts and ends at a value higher than 100% of the animation length?)

The second one, relating to isPushing or isPulling, is a bit different because the animation loops here as the player holds down W or S. How can I make these match during the first loop then stay match for all proceeding loops? Currently I don't see the matching working at all, though, even on the first loop.

My code is below, I hope it's not too messy. I'm still green but I've been really ripping my hair out on this one. The push/pull script:

 using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
 using Invector.vCharacterController;
 
 public class Draggable : MonoBehaviour
 {
     [SerializeField] int startingMass = 1000;
     [SerializeField] int pushingMass = 700;
     [SerializeField] float pullSpeed = 0.4f;
     [SerializeField] float originalSpeed = 4f;
     public GameObject[] objectsToColour;
 
     public GameObject player;
     Interacting playerScript;
     public Transform objectToMove;
 
     public Transform matchTarget;
     public Transform aimTarget;
 
     public bool isGrabbing;
     public bool isPushing;
     public bool isPulling;
 
     Animator playerAnimator;
 
     void Start()
     {
         player = GameObject.FindGameObjectWithTag("Player");
         playerScript = player.GetComponent<Interacting>();
         objectToMove = this.transform.parent;
 
         playerAnimator = player.GetComponent<Animator>();
     }
 
     void Update()
     {
         IndicateObjectInteraction(); // I've taken this function out below just to not crowd it
 
         if (isGrabbing)
         {
             print("grabbing matchtarget");
             playerScript.MatchTarget(matchTarget, AvatarTarget.RightHand, new Vector3(0, 0, 1), 0f, 0f, 0.25f, aimTarget, true);
         }
         else if (isPushing || isPulling)
         {
             playerScript.MatchTarget(matchTarget, AvatarTarget.RightHand, new Vector3(0, 0, 1), 0f, 0f, 0.2f, aimTarget, true);
         }
 
         Grab();
         PushPull();
 
         if (playerScript.isInActionZone == false)
         {
             playerScript.isMatchEnabled = false;
             this.GetComponent<Draggable>().enabled = false;
         }
     }
 
     private void Grab()
     {
         if (playerScript.isInActionZone == this && playerScript.isPlayerFacing && Input.GetButton("Fire1"))
         {
             isGrabbing = true;
             player.GetComponent<vThirdPersonInput>().isHorzDisabled = true;
 
             if (Input.GetButtonDown("Fire1") && isGrabbing)
             {
                 playerScript.isMatchEnabled = true;
                 playerAnimator.Play("GrabStart");
             }
 
             playerScript.isMatchEnabled = true;
             playerAnimator.SetBool("isGrabbing", true);
             objectToMove.GetComponent<Rigidbody>().mass = pushingMass;
         }
         else
         {
             playerAnimator.SetBool("isGrabbing", false);
            // playerScript.isMatchEnabled = false;
             objectToMove.gameObject.GetComponent<Rigidbody>().mass = startingMass;
 
             player.GetComponent<vThirdPersonInput>().isHorzDisabled = false;
             isGrabbing = false;
         }
     }
 
     private void PushPull()
     {
         if (isGrabbing && Input.GetButton("Vertical") && Input.GetAxis("Vertical") > 0)
         {
             isPushing = true;
             playerAnimator.SetBool("IsPushing", true);
         }
         else if (isGrabbing && Input.GetButton("Vertical") && Input.GetAxis("Vertical") < 0)
         {
             isPulling = true;
             playerAnimator.SetBool("IsPulling", true);
             objectToMove.parent = player.transform;
             objectToMove.gameObject.GetComponent<Rigidbody>().isKinematic = true;
             player.GetComponent<vThirdPersonController>().lockRotation = true;
             player.GetComponent<vThirdPersonMotor>().freeSpeed.runningSpeed = pullSpeed;
         }
         else
         {
             player.GetComponent<vThirdPersonController>().lockRotation = false;
             player.GetComponent<vThirdPersonMotor>().freeSpeed.runningSpeed = originalSpeed;
             objectToMove.gameObject.GetComponent<Rigidbody>().isKinematic = false;
             objectToMove.parent = null;
             playerAnimator.SetBool("IsPulling", false);
             playerAnimator.SetBool("IsPushing", false);
             isPushing = false;
             isPulling = false;
         }
     }
 }



Then here is the reference in the "playerScript" where the method is actually housed:

 public void MatchTarget(Transform targetPosition, AvatarTarget avatarTarget, Vector3 positionWeight, float rotationWeight, float curveStart, float curveEnd, Transform aimTarget, bool useAim)
 {
     if (isMatchEnabled)
     {
         print("matching");

         if (useAim)
         {
             Vector3 targetPostition = new Vector3(aimTarget.position.x, this.transform.position.y, aimTarget.position.z);
             this.transform.LookAt(targetPostition);
         }

         gameObject.GetComponent<Animator>().applyRootMotion = true;

         float normalizeTime = Mathf.Repeat(GetComponent<Animator>().GetCurrentAnimatorStateInfo(0).normalizedTime, 1f);

         if (normalizeTime > curveEnd)
             return;

         gameObject.GetComponent<Animator>().MatchTarget(targetPosition.position, targetPosition.rotation, avatarTarget, new MatchTargetWeightMask(positionWeight, rotationWeight), curveStart, curveEnd);
     }
 }



Thanks so much. If anyone is able to help, that would be appreciated a ton.

Comment
Add comment
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

0 Replies

· Add your reply
  • Sort: 

Your answer

Hint: You can notify a user about this post by typing @username

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this Question

Answers Answers and Comments

807 People are following this question.

avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

How to check Game Build Errors? 0 Answers

Is there a new retargetting system for the animation in 5.5? 1 Answer

Conflicting Animator SetTrigger 0 Answers

Set boolean to false when animation changes? 1 Answer

Stop box collider moving with object 1 Answer


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges