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
-1
Question by $$anonymous$$ · Jun 06, 2014 at 12:19 PM · characterclassclasses

Making a Trait Mechanic?

I have always loved The Sims 3, and one of my favourite little things about that game is that you can give your character personality traits. For example, you could make them silly, evil and a kleptomaniac. If I wanted to make my own trait system, how can I do something like change their speed or health or something based on a few traits that a player selects? This must be a big question, but I have some idea that I should be using classes?

Comment
Add comment · Show 1
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 Graham-Dunnett ♦♦ · Jun 06, 2014 at 12:19 PM 2
Share

Yes, it's a big question, and it's not obvious that this is even a Unity question.

1 Reply

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

Answer by Dazdingon · Jun 06, 2014 at 03:37 PM

You could try a very simple system that adds stats together :

 // Have a script add and remove traits from your players's playerTraits
 var playerTraits : TraitBonus[] = new TraitBonus[3];
 
 // Keep your original stats unaffected
 var originalStats : PlayerStats;

 // Use playerStats for the game culculations
 var playerStats : PlayerStats;

 class PlayerStats {

     var health : float = 0f;
     var attack : float = 0f;
     var defence : float = 0f;
     var speed : float = 0f;
 
     function AddTrait (bounus : TraitBonus) {
 
         health += bounus.health;
         attack += bounus.attack;
         defence += bounus.defence;
         speed += bounus.speed;
     }

     function MakeInstanceOf (stats: PlayerStats ) {
 
         health = stats.health;
         attack = stats.attack;
         defence = stats.defence;
         speed = stats.speed;
     }

 }

 class TraitBonus {

     var traitName : String = "Unknown";
     var health : float = 0f;
     var attack : float = 0f;
     var defence : float = 0f;
     var speed : float = 0f;
 }

When your player's playerTraits changes, add them to an instance of his originalStats

 function ApplyTraitsToStats () {
 
     playerStats.MakeInstanceOf(originalStats);
 
     for (trait in playerTraits) {
 
         playerStats.AddTrait(trait);
     }
 }

Use the inspector to set up available Traits, then store the references in playerTraits[]

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 $$anonymous$$ · Jun 06, 2014 at 03:56 PM 0
Share

This is totally fucking awesome! Very advanced for me, but I'm going to try analyzing it! Thanks!

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

22 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

Related Questions

Multiple Cars not working 1 Answer

Getting an error trying to assign a value to an array of classes element 0 Answers

How to prevent rigidbody with capsule collider from walking off the edge of cube mesh if button held down? 1 Answer

Inheritance hierarchy for character class implementation 1 Answer

Check if class belongs to part of tree (extended from) 1 Answer


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