Просте управління (вперед, назад, ліворуч, праворуч)

TheDeadHeaD 04 січ 2011, 12:42

Re: Просте управління (вперед, назад, ліворуч, праворуч)

Pyx 04 січ 2011, 12:46

Re: Просте управління (вперед, назад, ліворуч, праворуч)

TheDeadHeaD 04 січ 2011, 12:52

Re: Просте управління (вперед, назад, ліворуч, праворуч)

Pyx 04 січ 2011, 13:40

Re: Просте управління (вперед, назад, ліворуч, праворуч)

Paul Siberdt 04 січ 2011, 13:57

Re: Просте управління (вперед, назад, ліворуч, праворуч)

shutov 04 січ 2011, 15:16

Re: Просте управління (вперед, назад, ліворуч, праворуч)

TheDeadHeaD 04 січ 2011, 20:27

Мені не ліньки. Просто мало часу.

Я скачав папку. Розпакував. Перетягнув її до uniti. Відкрив assets> scenes. Відкрив префаб thegame і єдине що з'явилося це точки світла. wtf? Що не так вчинив?

Re: Просте управління (вперед, назад, ліворуч, праворуч)

Hansstudio 05 січ 2011, 00:15

var xSpeed ​​= 400.0; var ySpeed ​​= 400.0;

private var x = 0.0; private var y = 0.0;

function Start() var angles = transform.eulerAngles; x = angles.y; y = angles.x; >

/////////ротація камери///////// if (Input.GetMouseButton(1)) x += Input.GetAxis("Mouse X") * xSpeed ​​* 0.02; y -= Input.GetAxis("Mouse Y") * ySpeed ​​* 0.02;

var rotation = Quaternion.Euler (y, x, 0); transform.rotation = rotation; > var translationV = Input.GetAxis ("Vertical") * speed; var translationH = Input.GetAxis ("Horizontal") * speed;

translationV *= Time.deltaTime; translationH *= Time.deltaTime;

//// переміщення камери/////////// transform.Translate (translationH, 0, translationV);

transform.Translate (10 * translationH, 0, 10 *translationV); > >

(якщо є помилки, ногами не штовхати, тому що я сам тільки вчуся!)

p.s. Підкажіть, як у рантаймі за допомогою миші робити ротацію об'єкта? Вже 4 години туплю.

Re: Просте управління (вперед, назад, ліворуч, праворуч)

Gopher Mao 05 січ 2011, 18:35

using UnityEngine; using System.Collections;

[ RequireComponent ( typeof ( CharacterController ) ) ] public class PlayerMovement : MonoBehaviour < public float moveSpeed; public float backSpeed; public float strafeSpeed; public string goForward; public string goBack; public string goLeft; public string goRight;

private Transform _myTransform ; private CharacterController _controller;

public void Awake ( ) < _myTransform = transform; _controller = GetComponent CharacterController > ( ); >

void Start ( ) < moveSpeed ​​= 7.0f; backSpeed ​​= moveSpeed ​​/ 2; strafeSpeed ​​= moveSpeed ​​/ 2; goForward = "w"; goBack = "s"; goLeft = "a"; goRight = "d";

void Update ( ) < Walk ( ); Strafe (); >

private void Walk ( ) < if (Input. GetKey (goForward)) _controller. SimpleMove (_myTransform. TransformDirection (Vector3. forward) * moveSpeed); if (Input. GetKey (goBack)) _controller. SimpleMove (_myTransform. TransformDirection (Vector3. forward) *-backSpeed); >

private void Strafe ( ) < if (Input. GetKey (goLeft)) _controller. SimpleMove (_myTransform. TransformDirection (Vector3. right) * - strafeSpeed); if (Input. GetKey (goRight)) _controller. SimpleMove (_myTransform. TransformDirection (Vector3. right) * strafeSpeed); > >

+на камері скрипт, щоб крутити персонажа (вид від третього обличчя):

за допомогою UnityEngine ; використання System.Collections ;

публічний клас PlayerCamera : MonoBehaviour < загальнодоступна ціль трансформації; загальнодоступний float xSpeed ​​= 250.0f ;

приватне перетворення _myTransform; private bool _camButtonDown = false ; private float _x ;

void Awake ( ) < _myTransform = перетворення; >

void Початок ( ) < якщо ( target == null ) < Налагодження. LogWarning ( "камера: немає цілі!") ; > інакше < _myTransform. LookAt (мішень); > >

void Оновити ( ) < if ( Input. GetMouseButtonDown ( 1 ) ) < _camButtonDown = true ; > if ( Input. GetMouseButtonUp ( 1 ) ) < _camButtonDown = false ; > >

void LateUpdate ( ) < якщо ( _camButtonDown ) < якщо ( target != null ) < _x += Вхід. GetAxis ("Миша X") * xSpeed ​​* 0.02f; Quaternion targetRotation = Кватерніон. Ейлер (0, _x, 0); ціль. обертання = targetRotation; > > >

Re: Простое управління (вперед, назад, влево, вправо)

TheDeadHeaD 05 січня 2011, 19:20

var target : Transform ;

змінна відстань = 10,0;

var heightDamping = 2.0 ; var rotationDamping = 3.0 ;

@ скрипт AddComponentMenu ( "Camera-Control/Smooth Follow" )

if (! target) повернути;

wantRotationAngle = мета. eulerAngles . y ; wantedHeight = мета. позиція . y + висота ;

currentRotationAngle = перетворення. eulerAngles . y ; currentHeight = перетворення. позиція . y ;

CurrentRotationAngle = Mathf. LerpAngle (currentRotationAngle, wantRotationAngle, rotationDamping * Time. deltaTime);

currentHeight = Mathf. Лерп (currentHeight , wantedHeight , heightDamping * Time. deltaTime);

currentRotation = Quaternion. Euler (0, currentRotationAngle, 0);

transform. position = target. position; transform. position -= currentRotation * Vector3. forward * distance;

transform. position. y = currentHeight;

transform. LookAt (target); >

Потім у target ставлю гравця)

Re: Просте управління (вперед, назад, ліворуч, праворуч)

TheDeadHeaD 05 січ 2011, 23:58

Hansstudio, З таким керуванням гравець проходить крізь стіни. Я змінював керування на інше і все працювало нормально.

Gopher Mao, Я не можу привласнити об'єкт csharp скрипти. Пише, що ім'я файлу не відповідає назві класу який у скрипті. Знаєш у чому проблема?

Re: Просте управління (вперед, назад, ліворуч, праворуч)

Gopher Mao 06 січ 2011, 00:06

а у тебе файл PlayerMovement.cs називається?

Re: Просте управління (вперед, назад, ліворуч, праворуч)

TheDeadHeaD 06 січ 2011, 00:14

Re: Просте управління (вперед, назад, ліворуч, праворуч)

Gopher Mao 06 січ 2011, 00:20

Re: Просте управління (вперед, назад, ліворуч, праворуч)

Hansstudio 06 січ 2011, 01:10

Хто зараз на конференції

Зараз цей форум переглядають: John Folsonner та гості: 11

  • Список форумів
  • Техпідтримка • Наша команда • Видалити cookies конференції • Часовий пояс: UTC + 3 години