Untitled
unknown
plain_text
2 years ago
8.2 kB
9
Indexable
using UnityEngine; using Random = UnityEngine.Random; public enum FacialFeatureType { Lips, Nose, Face // Add more facial feature types as needed } public enum RaceType { Human, Elf, Dwarf // Add more race types as needed } public class CharacterAppearance { private float[] facialFeatures; private int hairStyleIndex; private Color hairColor; private bool hasFacialHair; private int facialHairStyleIndex; private Color facialHairColor; private float height; private float bodyType; private float size; private RaceType race; private float breastSize; public CharacterAppearance() { // Initialize default appearance values facialFeatures = new float[System.Enum.GetValues(typeof(FacialFeatureType)).Length]; hairStyleIndex = 0; hairColor = Color.black; hasFacialHair = false; facialHairStyleIndex = 0; facialHairColor = Color.black; height = 1.0f; bodyType = 0.5f; size = 1.0f; race = RaceType.Human; breastSize = 0.5f; } public float GetFacialFeature(FacialFeatureType featureType) { return facialFeatures[(int)featureType]; } public void SetFacialFeature(FacialFeatureType featureType, float value) { facialFeatures[(int)featureType] = value; } public int GetHairStyle() { return hairStyleIndex; } public void SetHairStyle(int styleIndex) { hairStyleIndex = styleIndex; } public Color GetHairColor() { return hairColor; } public void SetHairColor(Color color) { hairColor = color; } public bool HasFacialHair() { return hasFacialHair; } public void SetFacialHair(bool hasFacialHair) { this.hasFacialHair = hasFacialHair; } public int GetFacialHairStyle() { return facialHairStyleIndex; } public void SetFacialHairStyle(int styleIndex) { facialHairStyleIndex = styleIndex; } public Color GetFacialHairColor() { return facialHairColor; } public void SetFacialHairColor(Color color) { facialHairColor = color; } public float GetHeight() { return height; } public void SetHeight(float value) { height = value; } public float GetBodyType() { return bodyType; } public void SetBodyType(float value) { bodyType = value; } public float GetSize() { return size; } public void SetSize(float value) { size = value; } public RaceType GetRace() { return race; } public void SetRace(RaceType race) { this.race = race; } public float GetBreastSize() { return breastSize; } public void SetBreastSize(float value) { breastSize = value; } } public class CharacterGenerator : MonoBehaviour { private CharacterAppearance characterAppearance; public GameObject characterVisuals; // Reference to the character's visual representation public Transform cameraTarget; // Reference to the camera target (character) private void Awake() { characterAppearance = new CharacterAppearance(); } private void Start() { GenerateCharacter(); } public void GenerateCharacter() { GenerateFacialFeatures(); FocusCameraOnCharacter(); GenerateHair(); GenerateFacialHair(); GenerateHeight(); GenerateBodyType(); GenerateSize(); GenerateRace(); GenerateBreasts(); ApplyAppearance(); } private void GenerateFacialFeatures() { float lips = Random.Range(0f, 1f); float nose = Random.Range(0f, 1f); float face = Random.Range(0f, 1f); characterAppearance.SetFacialFeature(FacialFeatureType.Lips, lips); characterAppearance.SetFacialFeature(FacialFeatureType.Nose, nose); characterAppearance.SetFacialFeature(FacialFeatureType.Face, face); } private void GenerateHair() { int hairStyle = Random.Range(0, 5); Color hairColor = new Color(Random.Range(0f, 1f), Random.Range(0f, 1f), Random.Range(0f, 1f)); characterAppearance.SetHairStyle(hairStyle); characterAppearance.SetHairColor(hairColor); } private void GenerateFacialHair() { bool hasFacialHair = Random.value > 0.5f; int facialHairStyle = Random.Range(0, 3); Color facialHairColor = new Color(Random.Range(0f, 1f), Random.Range(0f, 1f), Random.Range(0f, 1f)); characterAppearance.SetFacialHair(hasFacialHair); characterAppearance.SetFacialHairStyle(facialHairStyle); characterAppearance.SetFacialHairColor(facialHairColor); } private void GenerateHeight() { float height = Random.Range(0.8f, 1.2f); characterAppearance.SetHeight(height); } private void GenerateBodyType() { float bodyType = Random.Range(0.0f, 1.0f); characterAppearance.SetBodyType(bodyType); } private void GenerateSize() { float size = Random.Range(0.8f, 1.2f); characterAppearance.SetSize(size); } private void GenerateRace() { int raceIndex = Random.Range(0, System.Enum.GetValues(typeof(RaceType)).Length); RaceType race = (RaceType)raceIndex; characterAppearance.SetRace(race); } private void GenerateBreasts() { float breastSize = Random.Range(0.3f, 0.7f); characterAppearance.SetBreastSize(breastSize); } private void ApplyAppearance() { // Apply the character appearance to the visual elements of the character // Implement your own logic here to update the character's visuals based on the appearance data Camera.main.transform.LookAt(cameraTarget); } public void SetFacialFeature(FacialFeatureType featureType, float value) { characterAppearance.SetFacialFeature(featureType, value); ApplyAppearance(); } public void SetHairStyle(int styleIndex) { characterAppearance.SetHairStyle(styleIndex); ApplyAppearance(); } public void SetHairColor(Color color) { characterAppearance.SetHairColor(color); ApplyAppearance(); } public void SetFacialHair(bool hasFacialHair) { characterAppearance.SetFacialHair(hasFacialHair); ApplyAppearance(); } public void SetFacialHairStyle(int styleIndex) { characterAppearance.SetFacialHairStyle(styleIndex); ApplyAppearance(); } public void SetFacialHairColor(Color color) { characterAppearance.SetFacialHairColor(color); ApplyAppearance(); } public void SetHeight(float value) { characterAppearance.SetHeight(value); ApplyAppearance(); } public void SetBodyType(float value) { characterAppearance.SetBodyType(value); ApplyAppearance(); } public void SetSize(float value) { characterAppearance.SetSize(value); ApplyAppearance(); } public void SetRace(RaceType race) { characterAppearance.SetRace(race); ApplyAppearance(); } private void FocusCameraOnCharacter() { // Update the camera's position and rotation to focus on the character Camera.main.transform.position = cameraTarget.position - Camera.main.transform.forward * 5f; Camera.main.transform.LookAt(cameraTarget); } public void SetBreastSize(float value) { characterAppearance.SetBreastSize(value); ApplyAppearance(); } }
Editor is loading...