void Init() { #if UNITY_EDITOR X_MouseSensitivity = 3; S_MouseSensitivity = 0.05f; #endif AudioListenerTransform = this.transform.parent.GetComponentInChildren <AudioListener>().transform; if (lerpState == null) { lerpState = new TPCameraState("lerp"); cacheLerpState = new TPCameraState("lerp"); } if (currentState == null) { currentState = new TPCameraState(""); } if (CameraStateList == null) { CameraStateList = Resources.Load <TPCameraListData>("Data/Camera/TPCameraListData"); if (CameraStateList == null) { Debug.LogError("TPCameraListData don't exist!!!"); return; } } mainCamera = this.GetComponentInChildren <Camera>(); TargetLookAt = new GameObject("targetLookAt").transform; //TargetLookAt.hideFlags = HideFlags.HideInHierarchy; TargetLookAt.position = Vector3.one; TargetLookAt.rotation = Quaternion.identity; DontDestroyOnLoad(TargetLookAt); DontDestroyOnLoad(this.gameObject); ChangeState("Lock2p5", false); }
/// <summary> /// Created the Third Person Controller /// </summary> void Create() { // base for the character var _3rdPerson = GameObject.Instantiate(charObj, Vector3.zero, Quaternion.identity) as GameObject; if (!_3rdPerson) return; _3rdPerson.name = "3rdPersonController"; _3rdPerson.AddComponent<ThirdPersonController>(); var footStep = _3rdPerson.AddComponent<FootStepFromTexture>(); var collider = _3rdPerson.GetComponent<CapsuleCollider>(); // rigidBody var rigidbody = _3rdPerson.GetComponent<Rigidbody>(); rigidbody.constraints = RigidbodyConstraints.FreezeRotation; rigidbody.collisionDetectionMode = CollisionDetectionMode.Continuous; rigidbody.mass = 80; // capsule collider collider.height = ColliderHeight(_3rdPerson.GetComponent<Animator>()); collider.center = new Vector3(0, (float) System.Math.Round(collider.height * 0.5f, 2), 0); collider.radius = (float) System.Math.Round(collider.height * 0.15f, 2); // animator _3rdPerson.GetComponent<Animator>().avatar = _3rdPerson.GetComponent<Animator>().avatar; var leftFT = _3rdPerson.GetComponent<Animator>().GetBoneTransform(HumanBodyBones.LeftFoot).gameObject.AddComponent<SphereCollider>(); var rightFT = _3rdPerson.GetComponent<Animator>().GetBoneTransform(HumanBodyBones.RightFoot).gameObject.AddComponent<SphereCollider>(); controller = currentTemplate.animatorController; if (controller) _3rdPerson.GetComponent<Animator>().runtimeAnimatorController = controller; // footStep var _footStepSouce = new GameObject("footStepSource"); _footStepSouce.transform.SetParent(_3rdPerson.transform); var sourceObj = new GameObject("sourceDefault", typeof(AudioSource)); sourceObj.transform.SetParent(_footStepSouce.transform); sourceObj.GetComponent<AudioSource>().playOnAwake = false; footStep.defaultSurface = new AudioSurface(); footStep.defaultSurface.source = sourceObj.GetComponent<AudioSource>(); footStep.leftFootTrigger = leftFT; footStep.rightFootTrigger = rightFT; // camera GameObject camera = null; if (Camera.main == null) { var cam = new GameObject("3rdPersonCamera"); cam.AddComponent<Camera>(); cam.AddComponent<FlareLayer>(); cam.AddComponent<GUILayer>(); cam.AddComponent<AudioListener>(); camera = cam; camera.GetComponent<Camera>().tag = "MainCamera"; camera.GetComponent<Camera>().nearClipPlane = 0.01f; } else { camera = Camera.main.gameObject; camera.gameObject.name = "3rdPersonCamera"; } var tpcamera = camera.GetComponent<TPCamera>(); if (tpcamera == null) tpcamera = camera.AddComponent<TPCamera>(); // define the camera target //tpcamera.Player = _3rdPerson.transform; var hips = _3rdPerson.GetComponent<Animator>().GetBoneTransform(HumanBodyBones.Hips); tpcamera.Player = hips; cameraListData = currentTemplate.cameraListData; if (cameraListData != null) { tpcamera.CameraStateList = cameraListData; } _3rdPerson.GetComponent<ThirdPersonMotor>().tpCamera = tpcamera; _3rdPerson.GetComponent<ThirdPersonMotor>().hud = CreateHud(); _3rdPerson.tag = "Player"; _3rdPerson.SetLayerRecursively(LayerMask.NameToLayer("Player")); this.Close(); }
/// Created the Third Person Controller void Create() { // base for the character var _3rdPerson = GameObject.Instantiate(charObj, Vector3.zero, Quaternion.identity) as GameObject; if (!_3rdPerson) { return; } SceneView view = SceneView.lastActiveSceneView; if (SceneView.lastActiveSceneView == null) { throw new UnityException("The Scene View can't be access"); } Vector3 spawnPos = view.camera.ViewportToWorldPoint(new Vector3(0.5f, 0.5f, 10f)); _3rdPerson.transform.position = spawnPos; var rigidbody = _3rdPerson.AddComponent <Rigidbody>(); var collider = _3rdPerson.AddComponent <CapsuleCollider>(); if (charType == CharacterType.CharacterController) { _3rdPerson.name = "3rdPersonController"; if (currentTemplate.templateType == CharacterTemplate.TemplateType.ThirdPerson) { _3rdPerson.AddComponent <ThirdPersonController>(); } //else // _3rdPerson.AddComponent<TopDownController>(); // camera GameObject camera = null; if (Camera.main == null) { var cam = new GameObject("3rdPersonCamera"); cam.AddComponent <Camera>(); cam.AddComponent <FlareLayer>(); cam.AddComponent <GUILayer>(); cam.AddComponent <AudioListener>(); camera = cam; camera.GetComponent <Camera>().tag = "MainCamera"; camera.GetComponent <Camera>().nearClipPlane = 0.01f; } else { camera = Camera.main.gameObject; camera.gameObject.name = "3rdPersonCamera"; } var tpcamera = camera.GetComponent <TPCamera>(); if (tpcamera == null) { tpcamera = camera.AddComponent <TPCamera>(); } // define the camera cursorObject tpcamera.target = _3rdPerson.transform; cameraListData = currentTemplate.cameraListData; if (cameraListData != null) { tpcamera.CameraStateList = cameraListData; } GameObject gC = null; var gameController = FindObjectOfType <vGameController>(); if (gameController == null) { gC = new GameObject("GameController"); gC.AddComponent <vGameController>(); } _3rdPerson.GetComponent <ThirdPersonMotor>().tpCamera = tpcamera; _3rdPerson.GetComponent <ThirdPersonMotor>().hud = CreateHud(); _3rdPerson.tag = "Player"; } else { _3rdPerson.tag = "Enemy"; _3rdPerson.name = "EnemyAI"; _3rdPerson.AddComponent <AIController>(); var navMesh = _3rdPerson.AddComponent <NavMeshAgent>(); navMesh.radius = 0.3f; navMesh.speed = 0f; navMesh.angularSpeed = 300f; navMesh.acceleration = 4f; navMesh.autoBraking = false; navMesh.autoTraverseOffMeshLink = false; } // rigidBody if (charType == CharacterType.CharacterController) { rigidbody.useGravity = true; rigidbody.constraints = RigidbodyConstraints.FreezeRotation; } else { rigidbody.useGravity = false; rigidbody.constraints = RigidbodyConstraints.FreezeRotation | RigidbodyConstraints.FreezePosition; } rigidbody.collisionDetectionMode = CollisionDetectionMode.Continuous; rigidbody.mass = 50; // capsule collider collider.height = ColliderHeight(_3rdPerson.GetComponent <Animator>()); collider.center = new Vector3(0, (float)System.Math.Round(collider.height * 0.5f, 2), 0); collider.radius = (float)System.Math.Round(collider.height * 0.15f, 2); // animator _3rdPerson.GetComponent <Animator>().avatar = _3rdPerson.GetComponent <Animator>().avatar; _3rdPerson.GetComponent <Animator>().updateMode = AnimatorUpdateMode.AnimatePhysics; controller = currentTemplate.animatorController; if (controller) { _3rdPerson.GetComponent <Animator>().runtimeAnimatorController = controller; } // footStep _3rdPerson.AddComponent <FootStepFromTexture>(); this.Close(); }
/// <summary> /// Created the Third Person Controller /// </summary> void Create() { // base for the character var _3rdPerson = GameObject.Instantiate(charObj, Vector3.zero, Quaternion.identity) as GameObject; if (!_3rdPerson) { return; } _3rdPerson.name = "3rdPersonController"; if (currentTemplate.templateType == CharacterTemplate.TemplateType.ThirdPerson) { _3rdPerson.AddComponent <ThirdPersonController> (); } else { _3rdPerson.AddComponent <TopDownController> (); } var footStep = _3rdPerson.AddComponent <FootStepFromTexture>(); var collider = _3rdPerson.GetComponent <CapsuleCollider>(); // rigidBody var rigidbody = _3rdPerson.GetComponent <Rigidbody>(); rigidbody.constraints = RigidbodyConstraints.FreezeRotation; rigidbody.collisionDetectionMode = CollisionDetectionMode.Continuous; rigidbody.mass = 50; // capsule collider collider.height = ColliderHeight(_3rdPerson.GetComponent <Animator>()); collider.center = new Vector3(0, (float)System.Math.Round(collider.height * 0.5f, 2), 0); collider.radius = (float)System.Math.Round(collider.height * 0.15f, 2); // animator _3rdPerson.GetComponent <Animator>().avatar = _3rdPerson.GetComponent <Animator>().avatar; _3rdPerson.GetComponent <Animator>().updateMode = AnimatorUpdateMode.AnimatePhysics; var leftFT = _3rdPerson.GetComponent <Animator>().GetBoneTransform(HumanBodyBones.LeftFoot).gameObject.AddComponent <SphereCollider>(); var rightFT = _3rdPerson.GetComponent <Animator>().GetBoneTransform(HumanBodyBones.RightFoot).gameObject.AddComponent <SphereCollider>(); controller = currentTemplate.animatorController; if (controller) { _3rdPerson.GetComponent <Animator>().runtimeAnimatorController = controller; } // footStep var _footStepSouce = new GameObject("footStepSource"); _footStepSouce.transform.SetParent(_3rdPerson.transform); var sourceObj = new GameObject("sourceDefault", typeof(AudioSource)); sourceObj.transform.SetParent(_footStepSouce.transform); sourceObj.GetComponent <AudioSource>().playOnAwake = false; footStep.defaultSurface = new AudioSurface(); footStep.defaultSurface.source = sourceObj.GetComponent <AudioSource>(); footStep.leftFootTrigger = leftFT; footStep.rightFootTrigger = rightFT; // camera GameObject camera = null; if (Camera.main == null) { var cam = new GameObject("3rdPersonCamera"); cam.AddComponent <Camera>(); cam.AddComponent <FlareLayer>(); // cam.AddComponent<GUILayer>(); cam.AddComponent <AudioListener>(); camera = cam; camera.GetComponent <Camera>().tag = "MainCamera"; camera.GetComponent <Camera>().nearClipPlane = 0.01f; } else { camera = Camera.main.gameObject; camera.gameObject.name = "3rdPersonCamera"; } var tpcamera = camera.GetComponent <TPCamera>(); if (tpcamera == null) { tpcamera = camera.AddComponent <TPCamera>(); } // define the camera cursorObject tpcamera.target = _3rdPerson.transform; cameraListData = currentTemplate.cameraListData; if (cameraListData != null) { tpcamera.CameraStateList = cameraListData; } _3rdPerson.GetComponent <ThirdPersonMotor>().tpCamera = tpcamera; _3rdPerson.GetComponent <ThirdPersonMotor>().hud = CreateHud(); _3rdPerson.tag = "Player"; this.Close(); }