- Home /
Creating a character from multiple objects
So I'm new to unity and I plan to create a space game. Before I really start to get in depth into it's creation I want to know about how to go about certain things. What I need to know is what is the best approach to having a character that can change. Lets say I have a ship but I want the player to be able to add extra things to it, like thrusters, or guns etc. but all these parts still need to function as 1 object unless I need to move them individually and I don't think that is a good approach. So how do I go about creating a character from multiple objects and still have it function as 1, I also need the objects to be added in the game because they will be able to make up to 100's of combinations.
Thanks in advance
Add your additional objects as a child of your body and then you can position and do whatever else respectively to the parent, it is a very broad subject so I advise you to read about Unity's parenting system and how it actually influence on both objects.
P.S. In this way you can make a large and complex tree-like subordination (e.g. Add part to body, then add cosmetics to the parts and so on).
Answer by Ericool · Apr 01, 2015 at 09:34 PM
You can use polymorphism and encapsulation like so :
public class PieceOfShip : MonoBehaviour
{
virtual void update(){return;}
virtual void render(){return;}
}
public class Gun : PieceOfShip
{
override void update()
{
/*your stuff*/
}
override void render()
{
/*your stuff*/
}
};
public class Cockpit : PieceOfShip
{
override void update()
{
/*your stuff*/
}
override void render()
{
/*your stuff*/
}
};
public class SpaceShip : MonoBehaviour
{
public Pieces[] pieces;
void Start()
{
}
void Update()
{
for(int i=0;i < pieces.Length;++i)
pieces[i].update();
}
void OnGUI()
{
for(int i=0;i < pieces.Length;++i)
pieces[i].render();
}
};
So actually depending on what you want to do , you will have to be specific and draw something with cubes and arrows just to see what is your analysis .
How would this work with physics in Unity? I want to be able to apply force to my ships.
Your answer
Follow this Question
Related Questions
How can I target/attack all gameobjects in a certain area? 1 Answer
using Contains(gameObject) to find and destroy a gameObject from a list 2 Answers
multiple enemies does nt work with this script but a a single enemy works..Please help 0 Answers
Edit multiple assets at the same time? 2 Answers
Reverting to prefab-state several game objects at once with stock Unity 3 Answers