- Home /
Can someone please tell me why this code isn't working?
Hello everyone,
Hopefully I'll get a video link that could actually show how to script something similar to what I have in mind. I'm very new to Unity and scripting is still very challenging for me if it's not too much to ask could someone please help me understand why this code isn't working. I'm simply trying to have a block rest on a plate to keep a ceiling up, but if the bock is removed from the plate then the ceiling will lower. I can't understand how something this basic is having me up for several days reading the Unity manuals and searching on Youtube for a similar tutorial. Any assistance would be greatly appreciated.
using UnityEngine;
using System.Collections;
public class controlCeiling : MonoBehaviour
{
public GameObject SpikeCeiling;
private Animator CeilingDown;
private bool CeilingLowering;
// Use this for initialization
void Start ()
{
CeilingDown = SpikeCeiling.GetComponent<Animator>();
}
// Update is called once per frame
void Update ()
{
CeilingLowering = CeilingDown.GetBool("LoweringCeiling");
}
void OnTriggerEnter (Collider entity)
{
if (entity.tag == "LBM_Cube")
{
print("The cube is on the pressure plate");
}
}
void OnTriggerStay (Collider entity)
{
if (entity.tag == "LBM_Cube")
{
CeilingDown.SetBool("LoweringCeiling", true); }
}
}
Hello! From what i understand you want to set the "LoweringCeiling" to false, when the Block is outside the trigger correct? you might want to set it to false in "OnTriggerExit" see https://docs.unity3d.com/ScriptReference/Collider.OnTriggerExit.html
Something like this, might help:
void OnTriggerExit(Collider entity){
// Set the bool to false, when the block leave the trigger area
if (entity.tag == "LB$$anonymous$$_Cube") {
CeilingDown.SetBool("LoweringCeiling", false);
}
}
And i don't think you need to set CeilingLowering, everytime on update.
Hope this help! cheers!
Yeah, just do this. But I'm not sure what his problem was. He didn't state a problem, he just said it didn't work.
void OnTriggerEnter(Collider entity){
// Set the bool to true, when the block enters the trigger area
if (entity.tag == "LB$$anonymous$$_Cube") {
CeilingDown.SetBool("LoweringCeiling", true);
}
}
void OnTriggerExit(Collider entity){
// Set the bool to false, when the block leave the trigger area
if (entity.tag == "LB$$anonymous$$_Cube") {
CeilingDown.SetBool("LoweringCeiling", false);
}
}
Oh, he might also have forgotten to tick the isTrigger field.
Harunakaze & mwnD$$anonymous$$1402,
I wanted to say thank you both for taking time to address my question and posting a link that will explain how to script and write code. I feel as if I should've taken a CPU program$$anonymous$$g course to learn Java or something ins$$anonymous$$d of trying to tackle using Unity. Scripting seems very challenge especially since I don't understand the basics lol. I hope that in the event I have more issues you guys will be super cool and lend me a helping hand.
Your answer
Follow this Question
Related Questions
OnTriggerEnter function in c# 0 Answers
Make object react to certain triggers only 1 Answer
Slenderman like game pages not working! 2 Answers
Box collider with strange behaviour 1 Answer
OnTriggerEnter/Exit called unexpectedly 2 Answers