Search Unity

  1. Unity 2019.1 beta is now available.
    Dismiss Notice
  2. The Unity Pro & Visual Studio Professional Bundle gives you the tools you need to develop faster & collaborate more efficiently. Learn more.
    Dismiss Notice
  3. We're looking for insight from anyone who has experience with game testing to help us better Unity. Take our survey here. If chosen to participate you'll be entered into a sweepstake to win an Amazon gift card.
    Dismiss Notice
  4. On February 28th the Feedback website will shut down and be redirected to the Unity forums. See the full post for more information.
    Dismiss Notice
  5. Want to provide direct feedback to the Unity team? Join the Unity Advisory Panel.
    Dismiss Notice
  6. Unity 2018.3 is now released.
    Dismiss Notice
  7. Improve your Unity skills with a certified instructor in a private, interactive classroom. Watch the overview now.
    Dismiss Notice

How can I animate both doors of the gate to be open to the left and right ?

Discussion in 'Animation' started by rhodan_unity, Feb 7, 2019.

  1. rhodan_unity

    rhodan_unity

    Joined:
    Feb 5, 2019
    Posts:
    6
    I want to make it in two ways.
    First using transform.localPosition and Lerp and second way by creating Animation clip.

    I have a parent GameObject empty name Gate and two children doorLeft and doorRight.
    On both doorLeft and doorRight there is a box collider and is trigger is checked.
    On doorLeft there is also a script name Collision:

    Code (csharp):
    1.  
    2. using System.Collections;
    3. using System.Collections.Generic;
    4. using UnityEngine;
    5. public class Collision : MonoBehaviour
    6. {
    7.     public GameObject doorLeft;
    8.     public GameObject doorRight;
    9.     public GameObject player;
    10.     public bool doorLockState = false;
    11.     public float speed = 3;
    12.     private bool triggered = false;
    13.     private Animator playerAnimator;
    14.     private void Start()
    15.     {
    16.         playerAnimator = player.GetComponent<Animator>();
    17.     }
    18.     private void OnTriggerEnter(Collider other)
    19.     {
    20.         triggered = true;
    21.     }
    22.     private void OnTriggerExit(Collider other)
    23.     {
    24.         doorRight.transform.localPosition = Vector3.Lerp(doorRight.transform.localPosition, new Vector3(0, 0, 0), Time.deltaTime * speed);
    25.     }
    26.     // Update is called once per frame
    27.     void Update()
    28.     {
    29.         float distanceFromTarget = Vector3.Distance(player.transform.position, doorLeft.transform.position);
    30.         if(triggered == true)
    31.         {
    32.             doorLeft.transform.localPosition = Vector3.Lerp(doorLeft.transform.localPosition, Vector3.up, Time.deltaTime * speed);
    33.         }
    34.     }
    35. }
    36.  
    My FPSController ( Player ) have a box collder and is trigger unchecked. And also a Rigidbody.
    The idea is when the player trigger one of the doors open both doors. Either by using Lerp or by playing animation clip.

    Both ways don't work.
    The triggering is working. But when I'm using the line:

    Code (csharp):
    1.  
    2. doorLeft.transform.localPosition = Vector3.Lerp(doorLeft.transform.localPosition, Vector3.up, Time.deltaTime * speed);
    3.  
    No matter is I tried Vector3.up or left or forward it's always move to the back. The doorLeft never move to other direction and not to the left it seems like it's always moving to the back.

    And about the Animation clip on the Gate parent gameobject I created Animation clip.
    Added to the animation clip both doorLeft and doorRight positions properties.



    When I press/click the record button and change the doorLeft position it will always move from the far position to the right. Instead moving from it's default position to the left.

    I tried to play and move the keys either to the start or to the second 5 or tried to change the animation events moved them to the left and right on the chart. But I can't make it move from the original start position to the left. I recorded and pressed play to see the result and it's never moving from the original position to the left.

    And when recording I'm dragging the doorLeft from it's current original position to the left but when I play it it's start moving from the left to the right ( the original position ).

    My goal is to study how to animate the doors in both methods using Lerp or using Animation clip.
     
  2. rhodan_unity

    rhodan_unity

    Joined:
    Feb 5, 2019
    Posts:
    6
    Ok, I found how to make the Animation part. Working great using Animator and parameters and the gate open like I wanted.

    Now how to make the second method. If instead playing the Animation clip I want to use the Vector3.Lerp to make the gate open ?