MasterGH Опубликовано 27 мая, 2014 Поделиться Опубликовано 27 мая, 2014 Игровой движок Unity3d. Пример того как заставить летать камеру в игре отключив её от персонажа. Показать контент using UnityEngine;using System.Collections;public class CheatFlyCamera : MonoBehaviour {public KeyCode keyActivated = KeyCode.CapsLock;public float acceleration = 2f, minSpeed = 1f, maxSpeed = 20f;public float mouseSensitivityX = 15f, mouseSensitivityY = 15f;public GUIStyle guiStyle;float speed = 1f, rotationY = 0f;Transform myTransform;bool isActive;GameObject goPerson = null;#region MonoBehaviorvoid Awake(){ myTransform = transform;}void OnGUI(){ GUILayout.Label("Press \"Caps Lock\" Button", guiStyle);}void Update(){ if(Input.GetKeyDown(KeyCode.Escape)){ Application.Quit(); } if(Input.GetKeyDown(keyActivated)){ isActive = !isActive; if(goPerson == null){ goPerson = GameObject.Find("3rd Person Controller"); } goPerson.SetActive(!isActive); } if(isActive){ var isSomeKey = false; var timePerFrame = Time.deltaTime; if(Input.GetKey(KeyCode.W)){ isSomeKey = true; speed += acceleration * timePerFrame; speed = Mathf.Clamp(speed + timePerFrame, minSpeed, maxSpeed); myTransform.position += ImullQuaternionToPpoint(myTransform.localRotation, Vector3.forward * speed * timePerFrame); } if(Input.GetKey(KeyCode.A)){ isSomeKey = true; speed += acceleration * timePerFrame; speed = Mathf.Clamp(speed + timePerFrame, minSpeed, maxSpeed); myTransform.position += ImullQuaternionToPpoint(myTransform.localRotation, Vector3.left * speed * timePerFrame); } if(Input.GetKey(KeyCode.D)){ isSomeKey = true; speed += acceleration * timePerFrame; speed = Mathf.Clamp(speed + timePerFrame, minSpeed, maxSpeed); myTransform.position += ImullQuaternionToPpoint(myTransform.localRotation, Vector3.right * speed * timePerFrame); } if(Input.GetKey(KeyCode.S)){ isSomeKey = true; speed += acceleration * timePerFrame; speed = Mathf.Clamp(speed + timePerFrame, minSpeed, maxSpeed); myTransform.position += ImullQuaternionToPpoint(myTransform.localRotation, Vector3.back * speed * timePerFrame); } if(Input.GetKey(KeyCode.Space)){ isSomeKey = true; speed += acceleration * timePerFrame; speed = Mathf.Clamp(speed + timePerFrame, minSpeed, maxSpeed); var pos = myTransform.position; pos.y += speed * timePerFrame; myTransform.position = pos; } if(!isSomeKey){ speed = Mathf.Lerp(speed, minSpeed, timePerFrame); } float rotationX = myTransform.localEulerAngles.y + Input.GetAxis("Mouse X") * mouseSensitivityX; rotationY += Input.GetAxis("Mouse Y") * mouseSensitivityY; rotationY = Mathf.Clamp (rotationY, -90f, 90f); transform.localEulerAngles = new Vector3(-rotationY, rotationX, 0); }}#endregionpublic Vector3 ImullQuaternionToPpoint(Quaternion rotation, Vector3 point){ float num = rotation.x * 2f; float num2 = rotation.y * 2f; float num3 = rotation.z * 2f; float num4 = rotation.x * num; float num5 = rotation.y * num2; float num6 = rotation.z * num3; float num7 = rotation.x * num2; float num8 = rotation.x * num3; float num9 = rotation.y * num3; float num10 = rotation.w * num; float num11 = rotation.w * num2; float num12 = rotation.w * num3; Vector3 result; result.x = (1f - (num5 + num6)) * point.x + (num7 - num12) * point.y + (num8 + num11) * point.z; result.y = (num7 + num12) * point.x + (1f - (num4 + num6)) * point.y + (num9 - num10) * point.z; result.z = (num8 - num11) * point.x + (num9 + num10) * point.y + (1f - (num4 + num5)) * point.z; return result;}}FlyCamera_exe.rarFlyCameraUnity3d4.3_package.part1.rarFlyCameraUnity3d4.3_package.part2.rarFlyCameraUnity3d4.3_package.part3.rarFlyCameraUnity3d4.3_package.part4.rar Ссылка на комментарий Поделиться на другие сайты Поделиться
Vlad2 Опубликовано 27 мая, 2014 Поделиться Опубликовано 27 мая, 2014 Хотелось бы еще статью с описанием кода)) Ссылка на комментарий Поделиться на другие сайты Поделиться
Coder Опубликовано 27 мая, 2014 Поделиться Опубликовано 27 мая, 2014 В 27.05.2014 в 13:22, Vlad2 сказал: Хотелось бы еще статью с описанием кода))Тут кода этого - кот наплакал, я не думаю, что его стоит разъяснять, ну а если он непонятен кому-то, то стоит задуматься о повышении уровня знаний. Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 27 мая, 2014 Автор Поделиться Опубликовано 27 мая, 2014 К сожалению нет желания делать статью или комментировать код.Движение персонажа и движение камеры описано кодом C#.Пакадж проекта в аттаче позволит все посмотреть в деталях.Документация Юнити. Очень все разжевано. Гугл Перводчик может перевести.По поводу встраивания отладочного кода в чужую игру для управления камерой это уже другая тема и её надо изучать для конкретной игры. Я думаю в Интернете может быть пример про управление камерой не только тупо по жестким глобальным координатам, но и по локальным координатам с учетом локальных углов, т.е. так как я сделал в примере этой темы.p.s. Кстати, для тех кто любит С++ в Unity3d 5.x планируется поддержка С++ синтаксиса.Подробнее здесьТакже будет улучшен рендеринг ран тайм. Показать контент На данный момент последняя версия Unity3d 4.5 Ссылка на комментарий Поделиться на другие сайты Поделиться
Coder Опубликовано 27 мая, 2014 Поделиться Опубликовано 27 мая, 2014 В 27.05.2014 в 16:02, MasterGH сказал: К сожалению нет желания делать статью или комментировать код.Движение персонажа и движение камеры описано кодом C#.Пакадж проекта в аттаче позволит все посмотреть в деталях.Документация Юнити. Очень все разжевано. Гугл Перводчик может перевести.По поводу встраивания отладочного кода в чужую игру для управления камерой это уже другая тема и её надо изучать для конкретной игры. Я думаю в Интернете может быть пример про управление камерой не только тупо по жестким глобальным координатам, но и по локальным координатам с учетом локальных углов, т.е. так как я сделал в примере этой темы.p.s. Кстати, для тех кто любит С++ в Unity3d 5.x планируется поддержка С++ синтаксиса.Подробнее здесьТакже будет улучшен рендеринг ран тайм. Показать контент На данный момент последняя версия Unity3d 4.5А разве Unity это не исключительно движок для C#/Java? Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 27 мая, 2014 Автор Поделиться Опубликовано 27 мая, 2014 Последний опубликованный Юнити 4.5 "исключительно" поддерживает синтаксис трех языков JavaScript, C#, Boo. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения