Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 13 Next capture
2021 2022 2023
1 capture
13 Jun 22 - 13 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 Serreas · Dec 30, 2013 at 10:10 PM · instantiateprefabruntime

nee help with Instantiating prefab at mouse position with GUI button

hi, I finally got my code working that lets me so far lengthen a piece of road prefab thats already in the scene to any length i want and also rotate it by clicking on it and dragging it. My camera is a overhead camera that i can rotate and move around. What I need help with is i need to instantiate the road prefab by clicking on a GUI button then click and drag it to the length i want and place it at that length on the terrain (kind of like cities xl or simcity).

Problem is that none of the methods i tried seem to work and i also cant find anything on google that would help me. here is the code.

 using UnityEngine;
 using System.Collections;
 
 public class Roadplacement : MonoBehaviour 
 {
     public GameObject Road;
     public GameObject RoadPrefab;
 
     private Ray ray;
 
     private float distObjRay;
     private float RoadLength;
     private float RoadScale_z;
     private float hitdist = 0.0f;
     private float speed = 30.0f;
 
     private Vector3 objectPos;
     private Vector3 Raypoint;
     private Vector3 Raypointxz;
 
 
     // Update is called once per frame
     void Update () 
     {
         
         if(Input.GetMouseButton(0))
         {
             // Initial scale and position vector of road
             Road.transform.localScale = new Vector3(Road.transform.localScale.x,Road.transform.localScale.y,0f);
 
             //Ray is being cast at mouse Position
             Plane roadPlane = new Plane(Vector3.up, transform.position);
             ray = Camera.main.ScreenPointToRay (Input.mousePosition);
 
             // World Coordinates of Ray
             Vector3 Raypoint = ray.GetPoint(hitdist);
             Vector3 Raypointxz = new Vector3(Raypoint.x,0,Raypoint.z);
             Vector3 objectPos = new Vector3(Road.transform.position.x,0,Road.transform.position.z);
 
             //Distance of object to Ray
             float distObjRay = Vector3.Distance(Raypointxz,objectPos);
 
             //Rotation of Road object towards mouse position
             if (roadPlane.Raycast (ray, out hitdist))
             {
                 Vector3 targetPoint = ray.GetPoint(hitdist);
                 Quaternion targetRotation = Quaternion.LookRotation(targetPoint - transform.position);
                 transform.rotation = Quaternion.Slerp(transform.rotation, targetRotation, speed * Time.deltaTime);
 
             }
 
             // New Scale based on the distance between mouse position and the object
             RoadScale_z = distObjRay *0.125f;
 
             // Applies the new z scale
             Road.transform.localScale = new Vector3(Road.transform.localScale.x,Road.transform.localScale.y,-RoadScale_z);
 
             // Tiles the road texture according to new scale of the prefab
             RoadPrefab.renderer.material.mainTextureScale = new Vector2(1,Road.transform.localScale.z *2);
 
         }
     }
 }

I think it needs to instantiated on input.getmousebuttonup after i dragged the road prefab with input.getmousebutton . I also think i need to save the inital mouse position on the ground which would be the starting point for the road. I dont know how to implement all that to get it to work. The code i have so far works fine with one road prefab in the seen. Maybe someone can help understand how instantiating actually works. Thanks.

Comment
Add comment · Show 1
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
avatar image Serreas · Dec 31, 2013 at 11:43 PM 0
Share

I figured it out it wouldnt instantiate because the road prefab had an an empty gameobject as its parent and i didnt realize that it actually tried to instantiate the empty gameobjet.

0 Replies

· Add your reply
  • Sort: 

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

18 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

Related Questions

Instantiate a prefab vs create one dynamically at runtime? 1 Answer

Prefabs Transforms LookAt 0 Answers

Instantiating scripts with references to prefabs loses the reference. 1 Answer

Avoid altering prefab at runtime 1 Answer

making prefabs at runtime? 2 Answers


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