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 mort96 · Jun 29, 2012 at 02:30 PM · javascriptcollisionobjectdestroy

Make an object destroy the object it is touching?

I am very new to Unity, and I am trying to make a very very simple Minecraft-inspired game. The world is made out of 1x1x1 cubes, and always right in front of the player, there is a small cube to show what block is targeted. What I basically want to do is this: Destroy the GameObject that is touching the cube.

I am using JavaScript.

Btw, the blocks that will be destroyed are instances of a prefab.

(sorry if this is unclear, it is kinda hard to explain. If something is unclear, feel free to ask :))

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

2 Replies

· Add your reply
  • Sort: 
avatar image
0

Answer by Loius · Jun 29, 2012 at 03:21 PM

You can use OnTriggerEnter to get the currently-touched object, and OnTriggerExit to clear it.

If your targeting cube is a Collider marked as a Trigger, and it has a Rigidbody marked as Kinematic, and your level cubes are Colliders not marked as Trigger and tagged as "gameBlock", I believe the following will work (you may need to attach kinematic rigidbodies to the level cubes, or move the targeting cube less than instantaneously between cubes):

[TargetingCube.js]

 private var target : GameObject;
 
 function OnTriggerEnter( other : Collider ) {
   if ( other.tag == "gameBlock" ) {
     target = other.gameObject; 
   }
 }
 function OnTriggerExit( other : Collider ) {
   if ( target == other.gameObject ) target = null; // only clear target if we haven't already gotten a new one
 }
 
 function GetTarget() : GameObject { return target; }
 function DestroyTarget() { if ( target ) Destroy( target ); target = null; }

Or you can use Physics.OverlapSphere to get all objects within (0.1) of the 'targeting cube' and destroy that one object that is returned

Those are my recommendations anyway.

Also if you have any decent-sized level you'll have so many cubes by the end your computer will melt. :D

Comment
Add comment · Show 1 · 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 Loius · Jun 29, 2012 at 04:05 PM 0
Share

All this said, I believe the better solution for $$anonymous$$inecraft-inspired games is to use a single mesh and deform it as necessary, and use an array to keep track of what blocks are where rather than make any attempt to hold all the meshes in memory at once.

There are lots of $$anonymous$$inecraft questions on here, too, and the answers in some of those are ridiculously helpful.

avatar image
0

Answer by mort96 · Jun 29, 2012 at 03:56 PM

Yeah, my computer is melting if I add a few light blocks on a 40x40x1 sized level :p

OnTriggerEvent sounds interesting. How do I get the currently touched object from that?

Comment
Add comment · Show 1 · 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 Loius · Jun 29, 2012 at 03:57 PM 0
Share

This is a comment, not an answer - I know, it's confusing to start out here. Use the tiny 'add new comment' button for things that aren't answers. ^_^ I'll edit my answer to clarify triggeryness.

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

5 People are following this question.

avatar image avatar image avatar image avatar image avatar image

Related Questions

collision script to destroy 2 Answers

Move object to raycast point. 3 Answers

Collision between objects 2 Answers

Destroy on Collision? 1 Answer

Collision with a coin 0 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