Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 12 Next capture
2021 2022 2023
1 capture
12 Jun 22 - 12 Jun 22
sparklines
Close Help
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
avatar image
0
Question by Shadowskull1247 · Jul 14, 2017 at 06:59 AM · javascriptinstantiateraycast

Raycast help?

I am trying to create a procedural and randomly generated city. It works nearly perfectly, but it tends to overlap a LOT. I am trying to use a raycast to determine if there is enough space for a road/building to spawn before it spawns anything, but it is not working. What am I doing wrongly?

Code:

 #pragma strict
 public var Crossroad: GameObject;
 public var Road: GameObject;
 public var HorizontalRoad: GameObject;
 public var HorizontalRoadDown: GameObject;
 public var DisabledRoad: GameObject;
 public var Lamp: GameObject;
 var CityLimitX1 = 500;
 var CityLimitZ1 = 500;
 var CityLimitX2 = -500;
 var CityLimitZ2 = -500;
 var i = 0;
 var Distance : float;
 static var StartCol: boolean = true;
 
 //var Number = Random.Range(1, 16);
 //static var CoordX = 
 
 
 
 //}
 
 
 function Start () {
 //var Start = true;
 
 
 var CurrentXPos = transform.position.x;
 var CurrentZPos = transform.position.z;
 var CrossroadNX = transform.position.x + 90;
 var TurnNX = transform.position.x + 60;
 var RoadNX = transform.position.x + 30;
 var Cross3wayNX = transform.position.x + 25;
 var CrossroadNZ1 = transform.position.z + 30;
 var TurnNZ = transform.position.z + 60;
 var RoadNZ = transform.position.z + 20;
 var Cross3wayNZ = transform.position.z + 30;
 var RandomNum = Random.Range(1, 5);;
 
 //var hit : RaycastHit;
 //var SphereVar = new Vector3(CurrentXPos, 0, CurrentZPos);
 //if (Physics.SphereCast(SphereVar, 30, transform.forward, hit, 30)) {
 var hit : RaycastHit;
 //var fwd: Vector3 = transform.TransformDirection(Vector3.forward);
     //if (Physics.Raycast(transform.position, fwd, 1000)) {
     if (Physics.Raycast (transform.position, transform.TransformDirection(Vector3.forward), hit)) {
         Debug.Log("There is something in front of the object!");
         Debug.Log("Failed.");
         Distance = hit.distance; 
 }
     //for (var i: int = 0; i < 10; i++) {
     if (RandomNum == 1) {
         if (CrossroadNX < CityLimitX1) {
             if (CrossroadNZ1 < CityLimitZ1) {
                 if (CrossroadNX > CityLimitX2) {
                     if (CrossroadNZ1 > CityLimitZ2) {
                     if (Distance > 90) {
                     Debug.Log("Fired Crossroad");
                     Instantiate(Crossroad, new Vector3(CurrentXPos + 60, 0, CurrentZPos),  Quaternion.Euler(Vector3(-90, 90, 0)));
                     Instantiate(DisabledRoad, new Vector3(CurrentXPos + 30, 0, CurrentZPos),  Quaternion.Euler(Vector3(-90, 90, 0)));
                     Instantiate(HorizontalRoad, new Vector3(CurrentXPos + 60, 0, CurrentZPos + 30),  Quaternion.Euler(Vector3(-90, 0, 0)));
                     Instantiate(HorizontalRoadDown, new Vector3(CurrentXPos + 60, 0, CurrentZPos - 30),  Quaternion.Euler(Vector3(-90, 0, 0)));
                     Instantiate(Road, new Vector3(CurrentXPos + 90, 0, CurrentZPos),  Quaternion.Euler(Vector3(-90, 90, 0)));
                     //Destroy(GetComponent(SecondCityGen));
                     GetComponent(SecondCityGen).enabled = false;
                     Debug.Log("Failed to exit script");
 }
 }
 }
 }
 }
 }
 //}
 if (RandomNum == 2) {
         if (RoadNX < CityLimitX1) {
             if (RoadNZ < CityLimitZ1) {
                 if (RoadNX > CityLimitX2) {
                     if (RoadNZ > CityLimitZ2) {
                     if (Distance > 30) {
                     Debug.Log("Fired Road1");
                     Instantiate(Road, new Vector3(CurrentXPos + 30, 0, CurrentZPos),  Quaternion.Euler(Vector3(-90, 90, 0)));
                     //Destroy(GetComponent(SecondCityGen));
                     GetComponent(SecondCityGen).enabled = false;
                     Debug.Log("Failed to exit script");
 }
 }
 }
 }
 }
 }
 if (RandomNum == 3) {
         if (RoadNX < CityLimitX1) {
             if (RoadNZ < CityLimitZ1) {
                 if (RoadNX > CityLimitX2) {
                     if (RoadNZ > CityLimitZ2) {
                     if (Distance > 30) {
                     Debug.Log("Fired RoadLamp");
                     Instantiate(Road, new Vector3(CurrentXPos + 30, 0, CurrentZPos),  Quaternion.Euler(Vector3(-90, 90, 0)));
                     Instantiate(Lamp, new Vector3(CurrentXPos + 30, 0, CurrentZPos + 6),  Quaternion.Euler(Vector3(0, 180, 0)));
                     Instantiate(Lamp, new Vector3(CurrentXPos + 30, 0, CurrentZPos - 6),  Quaternion.Euler(Vector3(0, 0, 0)));
                     //Destroy(GetComponent(SecondCityGen));
                     GetComponent(SecondCityGen).enabled = false;
                     Debug.Log("Failed to exit script");
 }
 }
 }
 }
 }
 }
 if (RandomNum == 4) {
         if (RoadNX < CityLimitX1) {
             if (RoadNZ < CityLimitZ1) {
                 if (RoadNX > CityLimitX2) {
                     if (RoadNZ > CityLimitZ2) {
                     if (Distance > 30) {
                     Debug.Log("Fired Road3");
                     Instantiate(Road, new Vector3(CurrentXPos + 30, 0, CurrentZPos),  Quaternion.Euler(Vector3(-90, 90, 0)));
                     //start = false;
 
                     GetComponent(SecondCityGen).enabled = false;
                     Debug.Log("Failed to exit script");
 
 }
 }
 }
 }
 }
 }
 }
 
 function Update () {
 if (StartCol == false) {
 var TempCol : MeshCollider;
 TempCol = GetComponent.<MeshCollider>();
 TempCol.isTrigger = false;
 Destroy(GetComponent(SecondCityGen));
 }
 }
 
 
 function OnTriggerEnter (other : Collider) {
 for (var T: int = 0; T < 50; T++) {
 if (StartCol == true) {
         Destroy(gameObject);
         }
 }
 }
Comment
Add comment
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

1 Reply

· Add your reply
  • Sort: 
avatar image
0

Answer by TWicked · Jul 14, 2017 at 08:13 AM

Try using Physics.OverlapSphere to see if the place where you are placing object is empty instead of using raycast.

https://docs.unity3d.com/ScriptReference/Physics.OverlapSphere.html

Comment
Add comment · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

Your answer

Hint: You can notify a user about this post by typing @username

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this Question

Answers Answers and Comments

143 People are following this question.

avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

A way to instantiate an item with 90 Degree increments? 2 Answers

How to activate a button? 1 Answer

Changing variable in a script of a game object hit with raycast 1 Answer

Odd Behavior with my Drag and Drop Code 0 Answers

[SOLVED] Only instantiating once 1 Answer


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges