Skip to main content

025. Unity3d Tutorial - Character Creation 5/5

See video

We continue with another tutorial in our Hack And Slash demo made with the Unity3d Game Engine.

In this video, we will change the way our elements are displayed on the character generation screen so that they will be much easier to move later on if we need to, or if we decide to change the resolution of the screen.

Tags:

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.
Offline
Joined: Jul 26 2011

Ok so I finished out the character generation and I have a load of errors I'm seeing. Many of these over time I have corrected however right now my stats (e.g. Might and Con) have what looks like a "T" over the first number in each. My Skills are showing something similar but it looks like a 27 and a 55 have been placed on top of each other. I've dug through the code but I can't seem to find where this error is occurring.
This is rather hard to tell considering the above however I don't believe the bonuses as I'm increasing stats (e.g. con) are applying to health correctly.
Unity Version is 3.3
I'm dropping the character generator code I have so far below.


public class CharacterGenerator : MonoBehaviour {
private PlayerCharacter _toon;
private const int STARTING_POINTS= 350;
private const int MIN_STARTING_ATTRIBUTE_VALUE = 10;
private const int STARTING_VALUE = 50;
private int pointsLeft;

// Use this for initialization
void Start () {
_toon = new PlayerCharacter();
_toon.Awake();

pointsLeft = STARTING_POINTS;

for(int cnt = 0; cnt < Enum.GetValues(typeof(AttributeName)).Length; cnt++) {
_toon.GetPrimaryAttribute(cnt).BaseValue = STARTING_VALUE;
pointsLeft -= (STARTING_VALUE - MIN_STARTING_ATTRIBUTE_VALUE);
}
_toon.StatUpdate();

}

// Update is called once per frame
void Update () {
}

void OnGUI() {
DisplayName();
DisplayPointsLeft();
DisplayAttributes();
DisplayVitals();
DisplaySkills();
}

private void DisplayName() {
GUI.Label(new Rect(10, 10, 50, 25 ), "Name: ");
_toon.Name = GUI.TextArea(new Rect(65, 10, 100, 25), _toon.Name);

}

private void DisplayAttributes() {
for(int cnt = 0; cnt < Enum.GetValues(typeof(AttributeName)).Length; cnt++) {
GUI.Label(new Rect(10, 40+ (cnt * 25), 100, 25), ((AttributeName)cnt).ToString());
GUI.Label(new Rect(115, 40+ (cnt * 25), 30, 25), _toon.GetPrimaryAttribute(cnt).AdjustedBaseValue.ToString());
if(GUI.Button(new Rect(150, 40 + (cnt * 25), 25, 25), "-")) {
if(_toon.GetPrimaryAttribute(cnt).BaseValue > MIN_STARTING_ATTRIBUTE_VALUE) {
_toon.GetPrimaryAttribute(cnt).BaseValue--;
pointsLeft++;
_toon.StatUpdate();
}
}
if(GUI.Button(new Rect(180, 40 + (cnt * 25), 25, 25), "+")) {
if(pointsLeft > 0) {
_toon.GetPrimaryAttribute(cnt).BaseValue++;
pointsLeft--;
_toon.StatUpdate();
}
}
}
}

private void DisplayVitals() {
for(int cnt = 0; cnt < Enum.GetValues(typeof(VitalName)).Length; cnt++) {
GUI.Label(new Rect(10, 40+ ((cnt + 7) * 25), 100, 25), ((VitalName)cnt).ToString());
GUI.Label(new Rect(115, 40+ ((cnt + 7) * 25), 30, 25), _toon.GetVital(cnt).AdjustedBaseValue.ToString());
}
}

private void DisplaySkills() {
for(int cnt = 0; cnt < Enum.GetValues(typeof(SkillName)).Length; cnt++) {
GUI.Label(new Rect(250, 40+ (cnt * 25), 100, 25), ((SkillName)cnt).ToString());
GUI.Label(new Rect(355, 40+ (cnt * 25), 30, 25), _toon.GetSkill(cnt).AdjustedBaseValue.ToString());
}
}

private void DisplayPointsLeft() {
GUI.Label(new Rect(250, 10, 100, 25 ), "Points Left: " + pointsLeft.ToString());
}
}

I'm unsure what is causing the problem here however if you see something that doesn't look right please let me know.

Offline
Joined: Jan 2 2012

Hi, great tutorial series. I've just finished this part, and there's something I'd like to change, but I'm not sure how.

I'd like the vitals to start at 25 (right now they start depending on the starting attributes only). Does this have something to do with the Vital script itself, or can it be changed in the CharacterGenerator script?

I'd also like to be able to subtract from the starting values by clicking the "-" (not going past 0 of course), adding points to points left to be spend on another attribute.

Any help on how to implement these changes would be much appreciated.