Question by
AdventurousAsh · Mar 28 at 09:50 PM ·
c#transformtransform.positionserializedproperty
Transform variable has not been assigned, but it has?
Hi all,
I'm working on getting the mechanics for a puzzle game to work. It's a basic lockpicking game and essentially I want the tumblers to move up after they have been hit in the correct order. This code is assigned to the lockpick, tumblers have separate scripts. I did choose the tumblers in the Unity menu for the Serialized fields. Here is the code:
[SerializeField] private Transform transformTumbler1;
[SerializeField] private Transform transformTumbler2;
[SerializeField] private Transform transformTumbler3;
[SerializeField] private Transform transformTumbler4;
[SerializeField] private Transform transformTumbler5;
void OnCollisionEnter2D(Collision2D collision)
{
Tumbler1 tumbler1 = collision.gameObject.GetComponent<Tumbler1>();
Tumbler2 tumbler2 = collision.gameObject.GetComponent<Tumbler2>();
Tumbler3 tumbler3 = collision.gameObject.GetComponent<Tumbler3>();
Tumbler4 tumbler4 = collision.gameObject.GetComponent<Tumbler4>();
Tumbler5 tumbler5 = collision.gameObject.GetComponent<Tumbler5>();
if(tumbler1 != null)
{
if(CheckTumbler(1, order, currentOrder))
{
currentOrder++;
LockTumbler(1);
Debug.Log("Correct");
}
else
{
Debug.Log("Incorrect");
wrongAttempt++;
}
}
if (tumbler2 != null)
{
if (CheckTumbler(2, order, currentOrder))
{
currentOrder++;
LockTumbler(2);
Debug.Log("Correct");
}
else
{
Debug.Log("Incorrect");
wrongAttempt++;
}
}
if (tumbler3 != null)
{
if (CheckTumbler(3, order, currentOrder))
{
currentOrder++;
LockTumbler(3);
Debug.Log("Correct");
}
else
{
Debug.Log("Incorrect");
wrongAttempt++;
}
}
if (tumbler4 != null)
{
if (CheckTumbler(4, order, currentOrder))
{
currentOrder++;
LockTumbler(4);
Debug.Log("Correct");
}
else
{
Debug.Log("Incorrect");
wrongAttempt++;
}
}
if (tumbler5 != null)
{
if (CheckTumbler(5, order, currentOrder))
{
currentOrder++;
LockTumbler(5);
Debug.Log("Correct");
}
else
{
Debug.Log("Incorrect");
wrongAttempt++;
}
}
}
bool CheckTumbler(int tumblerNumber, int[] order, int currentOrder)
{
if (tumblerNumber == order[currentOrder])
{
return true;
}
return false;
}
void LockTumbler(int tumblerNumber)
{
if (tumblerNumber==1)
{
transformTumbler1.position = transformTumbler1.position + new Vector3(-2.2f, 2.0f, 0.0f);
}
if (tumblerNumber ==2)
{
transformTumbler2.position = transformTumbler2.position + new Vector3(0.0f, 2.0f, 0.0f);
}
if (tumblerNumber ==3)
{
transformTumbler3.position = transformTumbler3.position + new Vector3(2.43f, 2.0f, 0.0f);
}
if (tumblerNumber ==4)
{
transformTumbler4.position = transformTumbler4.position + new Vector3(4.84f, 2.0f, 0.0f);
}
if (tumblerNumber ==5)
{
transformTumbler5.position = transformTumbler5.position + new Vector3(7.22f, 2.0f, 0.0f);
}
}
Comment
Your answer
![](https://koobas.hobune.stream/wayback/20220613054740im_/https://answers.unity.com/themes/thub/images/avi.jpg)