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 Slastraf · Jul 11, 2017 at 12:58 PM · c#camerashaderterrainmonodevelop

Best way to Camera Pick multiple objects and move them together

Hello

Given that there are multiple GamObject cubes aligned to shape a terrain , each being in a different position and height ;

How to make a raycast radius bigger to select multiple blocks, perhaps put them in a list and then calculate where to put them to flatten out the ones in the middle ?

alt text

In this poor ms paint picture you can see that the inner circle there are the cubes mostly affected, and the outer circle has a lower scale on the height.

Comment
Add comment · Show 4
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 toddisarockstar · Jul 11, 2017 at 02:46 PM 0
Share

actually the terrain would be an array inside of an array. this allows for info to be stored about 2 dimentional coordinates. the circular selection area would be a list of coordinates reletive to a center.

then the list of circular coordinates could be quicky compared to the 2d grid array with the offset of the mouse.

from there there you would use whatever block search algorithyms or flattening algos to do whatever you want to do .

avatar image Slastraf toddisarockstar · Jul 11, 2017 at 02:57 PM 0
Share

the thing is I already have a generated terrain in a 2d array, but with chunks I cant access any, is there a way to camera pick multiple ones ? no tthe one the mouse is exactly pointing at while picking

avatar image Jwizard93 Slastraf · Jul 11, 2017 at 08:40 PM 0
Share

I think toddisarockstar is suggesting the best method for you. You don't want to use the camera to pick objects. If the camera follows the mouse perhaps the distance of the camera from the block the mouse is directly over might be a nice way to set the radius.

Personally I would only use the camera if it is every block currently seen by the camera that is to be altered.

Show more comments

2 Replies

· Add your reply
  • Sort: 
avatar image
1
Best Answer

Answer by Cornelis-de-Jager · Jul 11, 2017 at 09:26 PM

The answer you are looking for is SphereCastAll. With this you can make a Cylinder shape when raycasting. I used it for a Force Push type ability in one of my projects to push down a wall of bricks and works amazing. Heres the code since it works differently for normal Raycast:

 using System.Collections.Generic;
 [...]
 
 RaycastHit[] getObjects () {
     // Variables for Sphere Cast
     Vector3 origin = transform.position;
     float radius = 5f;
     Vector3 direction = transform.forward;
     float maxDistance = Mathf.Infinity;
    // Layer is an optional parameter and works just like Raycast layer
 
     // Counter to keep all the objects
     RaycastHit[] hits;
 
     // Do the Raycast
     hits = Physics.SphereCastAll ( origin, radius, direction, maxDistance );
 
     return hits;
 }

You can then simply move the objects in the Array as you which.

Comment
Add comment · Show 2 · 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
avatar image Slastraf · Jul 12, 2017 at 08:37 AM 0
Share

So how do you take the hit GameObjects ? What is RaycastHit ? it seems very useless like that

avatar image Slastraf · Jul 12, 2017 at 08:48 AM 0
Share

never$$anonymous$$d, I got it. But is there a way to set the direction as a mousePosition ?

avatar image
1

Answer by Nischo · Jul 11, 2017 at 09:02 PM

First you have to use an appropriate container for your blocks, an array is probably the worst brute force container for any kind of operation off that sort. I suggest using an Octree. If you want to do multiple operations you want to store it instead of discarding it after a single operation as it can get expensive to built. Then you can check which of the octree nodes are inside your sphere, once you have it narrowed down, you can check the individual blocks inside each node and use the distance to your sphere center to know how much affected the node is by that operation. Or you could calculate the Y position average in relation to your sphere center Y to change their position.

And a final thought: Having one GameObject per block, especially each with its own collider and mesh is extremely inefficient and you should consider to change that, depending on the size of the world. If it is only a couple 1000 blocks, you should be fine. If its way more and maybe you want to have more fancy effects, you will have to reconsider.

Hope that helps you, good luck!

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

382 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 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 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

Distribute terrain in zones 3 Answers

What is the procedure of capturing a particular region using Render Texture 0 Answers

How do I use web camera values of certain pixels as input? 1 Answer

Multiple Cars not working 1 Answer

Any ideas as to why I get this error please ? 4 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