|
Название: Движение персонажа, вопрос по уроку Отправлено: GantZ_Yaka от Август 22, 2013, 08:00:01 У вас на форуме в уроках по Unity3d есть тема "Unity3D - создание движения персонажа и его анимация! Часть 1 (От третьего лица) ", в которой приведен пример отличного скрипта. т.к. тема старая, решил задатьвопрос не в ней а открыть новую. Вобщем вопрос. Вот скрипт:
Код: using UnityEngine; как сделать в этом примере вращение плавным и передвижение тоже плавным (сгладить)? Если вывести игру на большой экран то сразу бросается в глаза, как объекты передвигаются и вращаются рывками :(using System.Collections; public class Move : MonoBehaviour { public GameObject player; public int speedRotation = 3; public int speed = 5; public AnimationClip anima; public int jumpSpeed = 50; void Start () { player = (GameObject)this.gameObject; animation.AddClip(anima, "animCube"); } void Update(){ if (Input.GetKey(KeyCode.W) || Input.GetKey(KeyCode.UpArrow)) { player.transform.position += player.transform.forward * speed * Time.deltaTime; animation.CrossFade("animCube"); } if (Input.GetKey(KeyCode.S) || Input.GetKey(KeyCode.DownArrow)) { player.transform.position -= player.transform.forward * speed * Time.deltaTime; } if (Input.GetKey(KeyCode.A) || Input.GetKey(KeyCode.LeftArrow)) { player.transform.Rotate(Vector3.down * speedRotation); } if (Input.GetKey(KeyCode.D) || Input.GetKey(KeyCode.RightArrow)) { player.transform.Rotate(Vector3.up * speedRotation); } if (Input.GetKeyDown(KeyCode.Space)) { player.transform.position += player.transform.up * jumpSpeed * Time.deltaTime; } } } Название: Re: Движение персонажа, вопрос по уроку Отправлено: infernal от Октябрь 25, 2013, 20:33:40 Ммм... через transform - плохой вариант, лучше через CharacterController
Код: CharacterController cc;//Вначале в переменных И так во всех условиях клавиш, в самом компоненте CharacterController есть масса настроек, для сглаживания и ограничения движения(читай мануал)cc=this.gameObject.GetComponent<CharacterController>(); //При этом компонент должен висеть на объекте, на том же что и скрипт void Update(){ if (Input.GetKey(KeyCode.W) || Input.GetKey(KeyCode.UpArrow)) { cc.SimpleMove(forward/направление/ * speed); } } А чем тебе мешает использовать скрипт из StandartAssets? Добавлено: Октябрь 25, 2013, 20:38:37 А для вращения используй Quaternion(тут тоже используй справку, раздел ScriptingReference) |