Quantcast
Channel: Latest Questions by RoboticSarcasm
Viewing all articles
Browse latest Browse all 40

boolean never returns false

$
0
0
Hello everybody, in my AI code i want my NPC to, for instance, turn right if there is an obstacle left of him. I detect this by raycast and set a boolean to true so that it moves if obstacleleftofyou == true. However, this never returns to its false state in my code, even though i think i make it set to false whenever !obstacleleftofyou. Can anybody see what i did wrong here? //if obstacle is left of you, known by raycast, turn right. if (obstacleleftofyou == true){transform.Rotate(Vector3(0,1,0) * rotationSpeed * Time.deltaTime); myTransform.Translate(Vector3.forward * moveSpeed * Time.deltaTime);} /// var distance = Vector3.Distance(target.position, myTransform.position); if (distance < range && obstacleleftofyou == false){ transform.LookAt(Vector3(target.position.x, transform.position.y, target.position.z)); myTransform.Translate(Vector3.forward * moveSpeed * Time.deltaTime);} if (Input.GetKeyDown ("escape")){ Screen.lockCursor = false; // unfreeze mouse on pressing escape } var rightray = new Ray (transform.position, transform.right); // shoots ray right even though it says left var hitright : RaycastHit; // hit information if(Physics.Raycast (rightray, hitright, obstacleavoidancerangeside)){if (hitright.transform.tag == "metal"){obstaclerightofyou = true;{AvoidObstacleRight();}} // If raycast hits something within o avoid obstacle else obstaclerightofyou = false; } var forwray = new Ray (transform.position, transform.forward); //Shoots ray in front of object var hitforw : RaycastHit; // hit information if (Physics.Raycast (forwray, hitforw, obstacleavoidancerangeforward)){ if (hitforw.transform.tag == "metal"){obstacleinfrontofyou = true;{AvoidObstacleForward();}} // If raycast hits something within o avoid obstacle else obstacleinfrontofyou = false; } var leftray = new Ray (transform.position, -transform.right); //shoots ray left even though it says right var hitleft : RaycastHit; // hit information if (Physics.Raycast (leftray, hitleft, obstacleavoidancerangeside)){ if (hitleft.transform.tag == "metal"){obstacleleftofyou = true;{AvoidObstacleLeft();}} // If raycast hits something within o avoid obstacle else obstacleleftofyou = false; } } function AvoidObstacleRight (){ Debug.Log("obstacleright"); } function AvoidObstacleLeft(){ Debug.Log("obstacle left"); //yield WaitForSeconds(0.5);{obstacleleftofyou = false;}} } function AvoidObstacleForward (){ Debug.Log("obstacle in front"); }

Viewing all articles
Browse latest Browse all 40

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>