- Home /
 
how do you make walls close in after an object is destroyed?
Hello Unity community. I have an issue that I cant figure out how to solve, I hope someone can help me. I have a side scroller game and the player is in a room. When the player picks up an object on Mousedown and timer begins to countdown. The player has a certain amount of time to place the object where it belongs before time runs out. When time runs out the object gets destroys then a particle effect instantiates. Also, I animated two planes, one called "leftWall" and the other "rightWall". I want the animation to play when the object gets destroyed then stop after 2 seconds. May someone help me out please?
here's my script and sorry for the sloppy organization.
var normalCollisionCount = 1;
var moveLimit = .5;
var collisionMoveFactor = .01;
var addHeightWhenClicked = 0.0;
var freezeRotationOnDrag = true;
var cam : Camera;
private var myRigidbody : Rigidbody;
private var myTransform : Transform;
private var canMove = false;
private var yPos : float;
private var gravitySetting : boolean;
private var freezeRotationSetting : boolean;
private var sqrMoveLimit : float;
private var collisionCount = 0;
private var camTransform : Transform;
var DollOneSound : AudioClip;
var dollExplode : Transform;
var countDown : GUIText;
static var TimerOn:boolean=false;
static var timer: float = 5; // set duration time in seconds in the Inspector
static var ExplodedDoll : boolean=false;
var rightWall : AnimationClip; //making walls close in
var leftWall : AnimationClip;
function Start () {
Timer=false; myRigidbody = rigidbody; myTransform = transform; if (!cam) { cam = Camera.main; } if (!cam) { Debug.LogError("Can't find camera tagged MainCamera"); return; } camTransform = cam.transform; sqrMoveLimit = moveLimit * moveLimit; // Since we're using sqrMagnitude, which is faster than magnitude }
function OnMouseDown () { canMove = true; myTransform.Translate(Vector3.up*addHeightWhenClicked); gravitySetting = myRigidbody.useGravity; freezeRotationSetting = myRigidbody.freezeRotation; myRigidbody.useGravity = false; myRigidbody.freezeRotation = freezeRotationOnDrag; yPos = myTransform.position.y; audio.PlayOneShot (DollOneSound); TimerOn = true;
}
function Update (){
 if(TimerOn){
       timer -= Time.deltaTime;
       if (timer > 0){
         countDown.text = timer.ToString("F0") +" " + "seconds";
      } else {
       var sparkle : Transform = Instantiate(dollExplode, transform.position, transform.rotation);           
     Destroy(gameObject);;
         GameObject.Find("L_Wall").animation.Play("leftWall");
             yield WaitForSeconds (1) ;
                 animation.Stop("leftWall");
             GameObject.Find("R_Wall").animation.Play("rightWall");
             yield WaitForSeconds (2) ;
             animation.Stop("rightWall");
       }
   
      
   }
   }
 
 
               function OnMouseUp () { canMove = false; myRigidbody.useGravity = gravitySetting; myRigidbody.freezeRotation = freezeRotationSetting; TimerOn = false;
 if (!myRigidbody.useGravity) {
     myTransform.position.y = yPos-addHeightWhenClicked;
 }
 
               }
function OnCollisionEnter () { collisionCount++; }
function OnCollisionExit () { collisionCount--; }
function FixedUpdate () { if (!canMove) return;
 myRigidbody.velocity = Vector3.zero;
 myRigidbody.angularVelocity = Vector3.zero;
 myTransform.position.y = yPos;
 var mousePos = Input.mousePosition;
 var move = cam.ScreenToWorldPoint(Vector3(mousePos.x, mousePos.y, camTransform.position.y - myTransform.position.y)) - myTransform.position;
 move.y = 3.0;
 if (collisionCount > normalCollisionCount) {
     move = move.normalized*collisionMoveFactor;
 }
 else if (move.sqrMagnitude > sqrMoveLimit) {
     move = move.normalized*moveLimit;
 }
 
 myRigidbody.MovePosition(myRigidbody.position + move);
 
               }
@script RequireComponent(Rigidbody)
@script RequireComponent (AudioSource)
Hi, you must edit and mark the code as code so it formats properly - or else a moderator will delete.
Your answer
 
             Follow this Question
Related Questions
Animations aren't playing in reverse. 0 Answers
Destroying Instantiated Prefab from AssetBundle 1 Answer
Solved: Destroy command not working 1 Answer
Respawn after delay 3 Answers
Instantiate prefab, add to list, destroy older prefab 1 Answer