Просте управління (вперед, назад, ліворуч, праворуч)
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 години