- Home /
Question by
Nirvana_Dogra · Sep 10, 2019 at 12:38 PM ·
scripting problemgamescripting beginnerhingejoint
Unable to unhinge and hing a new object.
I am trying to make a game like block towers. To do this I have done the following: 1) Created a base block 2) I needed the block to hover in the air like a pendulum - I added a 'HingeJoint to the new block. 3) Now every time the user presses 'X' I have cloned the initial block and the destroyed the HingeJoint of the initial block.
The problem is that it works for the first block which drops but the second block that appears glitches. One thing I noted that my script is not getting updated to the now hinge. Please help me. Thanks.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class try2 : MonoBehaviour
{
// Start is called before the first frame update
private int factor=2;
public GameObject box;
public HingeJoint hinge;
public HingeJoint realDeal;
public Quaternion newRotation;
public int hasResponse=0;
void Start()
{
box = GameObject.Find("newBlock");
hinge = box.GetComponent(typeof(HingeJoint)) as HingeJoint;
realDeal = hinge;
newRotation = box.transform.rotation;
}
// Update is called once per frame
void Update()
{
//HingeJoint hinge = gameObject.GetComponent(typeof(HingeJoint)) as HingeJoint;
Debug.Log(hasResponse);
if (Input.GetKeyDown("x"))
{
//Destroy(hinge);
//box.GetComponent(hinge).enable==false;
GameObject box2 = Instantiate(box, new Vector3(-0.99f, 3.01f + factor, 0.27f), newRotation);
//HingeJoint hj = box2.GetComponent(typeof(HingeJoint)) as HingeJoint;
HingeJoint hj=box2.AddComponent(typeof(HingeJoint)) as HingeJoint;
hj.anchor = realDeal.anchor;
if (hinge) { Destroy(hinge); }
hinge = hj;
Debug.Log("Hello: " + hinge.anchor);
Destroy(hj);
hasResponse = 0;
//tempHinge = box.gameObject.AddComponent<HingeJoint>();
// tempHinge.achor = hinge.achor;
}
}
capture.png
(419.2 kB)
capture.png
(432.9 kB)
Comment