Game Maker - создание игр | HellRoom Games
Ноябрь 16, 2025, 03:28:47 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Войти
Новости:
 
   Начало   Game Maker Помощь Правила форума Поиск Календарь Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: Движение персонажа, вопрос по уроку  (Прочитано 3442 раз)
0 Пользователей и 1 Гость смотрят эту тему.
GantZ_Yaka
Новичок
*

Репутация: 0
Offline Offline

API: Unity 3D
Сообщений: 1


« : Август 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;
  }
 }
}
как сделать в этом примере вращение плавным и передвижение тоже плавным (сгладить)? Если вывести игру на большой экран то сразу бросается в глаза, как объекты передвигаются и вращаются рывками :(
Записан
infernal
Участник
****

Репутация: 9
Offline Offline

Пол: Мужской
API: Unity 3D
Деятельность: Создаю игры, чтож ещё
Сообщений: 150



« Ответ #1 : Октябрь 25, 2013, 20:33:40 »

Ммм... через transform - плохой вариант, лучше через CharacterController
Код:
CharacterController cc;//Вначале в переменных

cc=this.gameObject.GetComponent<CharacterController>(); //При этом компонент должен висеть на объекте, на том же что и скрипт

 void Update(){
if (Input.GetKey(KeyCode.W) || Input.GetKey(KeyCode.UpArrow))
  {
 cc.SimpleMove(forward/направление/ * speed);
  }
}
И так во всех условиях клавиш, в самом компоненте CharacterController есть масса настроек, для сглаживания и ограничения движения(читай мануал)

А чем тебе мешает использовать скрипт из StandartAssets?

Добавлено: Октябрь 25, 2013, 20:38:37
А для вращения используй Quaternion(тут тоже используй справку, раздел ScriptingReference)
Записан

Не меняй достойных ради доступных
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  

HellRoom Games © 2006-2012 All Rights Reserved
Powered by SMF 1.1.21 | SMF © 2013, Simple Machines
Страница сгенерирована за 0.112 секунд. Запросов: 29.