Trying to get information from multiple gameObjects in a scene - unity3d

Hope everybody who's reading this is having a great day!
Anyways I'm having a little bit of a problem with a system I want to implement in my Unity Project, basically it's a Enemy ID system. The idea was whenever the player enters in contact with a enemy, it would get it's ID and would use it to instantiate them in a battle scene.
This is the Scriptable Object I'm using as a template for the enemy stats and ID
This is a example of how would the enemy stats look like
And this is the script that check the collisions with the enemies
My problem stand from that I can only get information of one kind of enemy, I've tried making the enemy check the collisions so they would get their own ID, it worked but it would be hell to parse this information through scenes. Is there a way to make the script which check collision detect more than one type of enemy? Help would be very much appreciated!

I would leave a comment, but my reputation isnt quiet high enough yet. Is there a reason you cant use raycasting? I believe you are only evaluating a single gameObject.
Enemy = collision.gameObject;
You then compare that single enemy object
if(Enemy.CompareTag("Enemy")) {
}
You should likely store an array of enemies and check each one on collision enter.

Related

unity character attached to game object

I'm quite new to Unity and there is one thing i couldn't think of how to make it and i couldn't exact information either so here i am. (sorry, my English is not perfect)
what i want to do is attaching a character to game object.
In my game, player(user) will control or steer the game object and the character attached to the game object just Looks as if it's riding or driving the game object.
(to help you understand, maybe you can imagine that player control a skateboard and there is a character on it)
So far, I tried 2 ways -
1. I made character as child of the game object, and gave an animation to the character but i found out it is not looks very natural.
2. I made a ragdoll and tried to attach it to the game object by using fixed joint between the game object and the character's feet but in playing mode, only ragdoll's feet was moving with the game object.
So I wonder if there is a good way to do it.
Anybody can give me an advice? I would so appreciate it.
Thanks in advance.
Your solutions is here, and its called IK:
1https://docs.unity3d.com/Manual/InverseKinematics.html
Invere kinematics isn't an easy topic and you will have to test it a lot(of course you could find some workarounds) but if you want the most elegant solution give it a try.

Unity- Colliding Passing Through

I made airplane shooter in Unity. First I make player and I already make all the code. And it works well. And then now I want to change the player object. I had already put the script and give same name and tag as the used player that I make. And the colliding is a mess. I can shoot enemies down. But the enemies can't shoot or hit me. The enemies bullet and the enemies passing through my player object.
I don't know why. Please help me to find the problem. Just tell me the possibilities of this problem cause.
Here is the screenshot of my new object component
Check if your Collider has the "Is Trigger" checked, that may be causing the error.

unity3d player gameobject "hear" sounds

I have a question that is a little... complex
basically I want a gameObject (an enemy) "listen" to the sound of the player (footsteps, door opening, gunfire etc)
I could do this just fine by using:
>Collider[] hitColliders;
>hitColliders = Physics.OverlapSphere(transform.position, 10f,enemyLayer);
>
>for(int i=0;i<hitcolliders.Length;i++){}// Call Enemy Hear Player Function
However, the problem starts here:
I want the "sound" to be blocked by walls. At first, I thought I could use Physics.Linecast to do this. However, this means the sound could be blocked by a mere piece of pole, because Physics.Linecast only shoots a single, straight line.
What I want is player C could not hear anyone at all, but player A and B could still hear each other.
I hope you guys understand my question.
You could place the objects you want to block the soundwave on a specific layer. And just make the raycast ignore all other layers.
Leave all this Physic and other graphical stuff behind.
Create a separate logic for this behavior.
Create a big chess board (where x,y will be x,y position in you game) and add only sound-generators, sound-listeners and sound-obstacles.
Update this chess board each frame and create sounds, fly sounds, block sounds and listen to sounds and act appropriate as the real life actors.
This way you can add parameters to each obstacle, sound-generator and sound-listener so that all be configurable.

Getting Skybox to change on collision in unity with UnityScript?

I'm quite new to UnityScript as my area of interest is python, however me and a friend are planning to create a small indie game and I need the skybox to change on collision in unity. I would prefer this to be done in javascript if at all possible. Please take a look at it and let me know whats wrong with it, as when run it makes no difference to the scene.
#pragma strict
var mat:Material;
function OnTriggerEnter(trigger: Collider){
RenderSettings.skybox=mat;
}
That is the entire script. Thank you for any help given
make sure that for your objects that collide... typically one must have a static collider (e.g. floor, wall) and the other a collider and rigidBody to hit it (e.g. player, car). Also check your physics settings to make sure the layers that the objects are in, can hit each other.
Make sure you have your script on the right object... collider or collidee ? try putting a script on both objects with a print in each.
Check here for more info
http://docs.unity3d.com/Documentation/Manual/Physics.html
What exactly to you mean by changing on collision? Skyboxes cannot be collided with. If you mean objects colliding other than the skybox, make sure that at least one of the collider's has "Is Trigger" checked in the inspector.

Issue with character models in unity

I am using the Unity 4 game engine and I have two scripts, one that tells the enemy to attack the player, and one that lets the player attack the enemy. The enemy can attack the player, but the other script does not work. If i apply the script to a game object such as a capsule or cube, the script works fine, but not when i apply it to an imported character model. The script basically works by checking the enemy's health and destroying the gameobject if it is equal to or below zero. I have a feeling it has to do with the character model not being an actual game object but i am pretty sure it is. Can anyone help?
When you make the enemy character. Make an empty game object. Then create your enemy inside of that object. In the hierarchy view it should be parented by the empty object. You can also do this by dragging the enemy to the empty game object in the hierarchy view. Then attach the script to the empty game object instead of the model.
Solution
Please check all the tags you are applying to the scripts .No Script could able to work until unless the tagging is done . The tagging help the game object to differentiate between normal object and the enemy so the tagging plays a vital role to run scripts .