Контроллер

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

Контроллер

Сообщение pirat9629 18 авг 2012, 22:09

Синтаксис:
Используется javascript
var speed : float = 0.0f;
var maxSpeed : float = 10.0f;

function Update () {
        if (speed > maxSpeed) {
                speed = maxSpeed;
        }
        if (speed < 0) {
                speed = 0;
        }
       
        if (Input.GetKey(KeyCode.R)) {
                speed += 0.1f;
        }
       
        if (Input.GetKey(KeyCode.F)) {
                speed -= 0.1f;
        }
       
       
        transform.position += transform.TransformDirection (Vector3.forward) * speed * Time.deltaTime;
                                     
}                                                                  


function OnGUI () {
        GUI.Label(Rect(10,Screen.height-40,80,20), "Speed: " + Mathf.RoundToInt(speed));
}

решил написать контроллер для своей игры(на космическую тему), но еще никогда не писал потому интересуют такие вопросы:
1) transform.position += transform.TransformDirection (Vector3.forward) * speed * Time.deltaTime; - правильная ли это строка для передвижения или надо как то по другому двигать?
2) как реализовать при нажатии на W поворот космического кораблика вверх, при D наклонился вправо и начал разворачиваться в право..
pirat9629
UNIт
 
Сообщения: 72
Зарегистрирован: 20 мар 2012, 21:16
Откуда: Україна

Re: Контроллер

Сообщение trololoid 18 авг 2012, 23:39

А что за поворот вверх?)
++
Добавь в условие перед тем как прибавлять\убавлять значения, что скорость уже не больше\меньше определённых
++
Обычно двигают transform.Translate()'ом
Аватара пользователя
trololoid
Старожил
 
Сообщения: 712
Зарегистрирован: 15 сен 2011, 19:18
Откуда: Туапсе, Краснодарский край, Россия

Re: Контроллер

Сообщение pirat9629 18 авг 2012, 23:51

поворот вверх..
вид со стороны...
У вас нет доступа для просмотра вложений в этом сообщении.
pirat9629
UNIт
 
Сообщения: 72
Зарегистрирован: 20 мар 2012, 21:16
Откуда: Україна

Re: Контроллер

Сообщение trololoid 19 авг 2012, 00:23

по-другому называется.
Т.к. ты не используешь физику, transform.Rotate() тебе в помощь
Аватара пользователя
trololoid
Старожил
 
Сообщения: 712
Зарегистрирован: 15 сен 2011, 19:18
Откуда: Туапсе, Краснодарский край, Россия

Re: Контроллер

Сообщение pirat9629 19 авг 2012, 17:35

а как прикрепить камеру к обэкту так чтоб на поворотах она плавно следовала за игроком
pirat9629
UNIт
 
Сообщения: 72
Зарегистрирован: 20 мар 2012, 21:16
Откуда: Україна

Re: Контроллер

Сообщение pirat9629 21 авг 2012, 17:49

нашел неплохой скрипт камеры
Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;

public class CameraController : MonoBehaviour {
         
public Transform target;
         
public float targetHeight= 2.0f;
public float distance= 2.8f;
public float maxDistance= 10;
public float minDistance= 0.5f;
public float xSpeed= 250.0f;
public float ySpeed= 120.0f;
public float yMinLimit= -40;
public float yMaxLimit= 80;
public float zoomRate= 20;
public float rotationDampening= 3.0f;
         
private float x= 0.0f;
private float y= 0.0f;
public bool  isTalking = false;



                 
public void  Start (){
//new AddComponentMenu("Camera-Control/WoW Camera");
     Vector3 angles= transform.eulerAngles;
     x = angles.y;
     y = angles.x;

    // Make the rigid body not change rotation
       if (rigidbody)
       rigidbody.freezeRotation = true;
}

public void  LateUpdate (){
    if(!target)
       return;
   
    // If either mouse buttons are down, let them govern camera position
    if (Input.GetMouseButton(1) || (Input.GetMouseButton(1))){
    x += Input.GetAxis("Mouse X") * xSpeed * 0.02f;
    y -= Input.GetAxis("Mouse Y") * ySpeed * 0.02f;
   
   
    // otherwise, ease behind the target if any of the directional keys are pressed
    } else if(Input.GetAxis("Vertical")!=0 || Input.GetAxis("Horizontal")!=0) {
       //float targetRotationAngle= target.eulerAngles.y;
       //float currentRotationAngle= transform.eulerAngles.y;
       //x = Mathf.LerpAngle(currentRotationAngle, targetRotationAngle, rotationDampening * Time.deltaTime);
     }
     

    distance -= (Input.GetAxis("Mouse ScrollWheel") * Time.deltaTime) * zoomRate * Mathf.Abs(distance);
    distance = Mathf.Clamp(distance, minDistance, maxDistance);
   
    y = ClampAngle(y, yMinLimit, yMaxLimit);
   
   // ROTATE CAMERA:
    Quaternion rotation = Quaternion.Euler(y, x, 0);
    transform.rotation = rotation;
   
    // POSITION CAMERA:
    Vector3 position= target.position - (rotation * Vector3.forward * distance + new Vector3(0,-targetHeight,0));
    transform.position = position;
   
    // IS VIEW BLOCKED?
     RaycastHit hit;
     Vector3 trueTargetPosition = target.transform.position - new Vector3(0,-targetHeight,0);
    // Cast the line to check:
     if (Physics.Linecast (trueTargetPosition, transform.position, out hit)) {
       // If so, shorten distance so camera is in front of object:
       float tempDistance= Vector3.Distance (trueTargetPosition, hit.point) - 0.28f;
       // Finally, rePOSITION the CAMERA:
       position = target.position - (rotation * Vector3.forward * tempDistance + new Vector3(0,-targetHeight,0));
       transform.position = position;
    }
}

public static float  ClampAngle ( float angle ,   float min ,   float max  ){
    if (angle < -360)
       angle += 360;
    if (angle > 360)
       angle -= 360;
    return Mathf.Clamp (angle, min, max);
   
}
}


как в нее добавть чтоб она следила за поворотами игрока и сама поварачивалась, но когда зажимаешь ПКМ то можна было изменять обзор как щас но если отпутить ПКМ он возвращался снова в ту позицию куда смотрит игрок
pirat9629
UNIт
 
Сообщения: 72
Зарегистрирован: 20 мар 2012, 21:16
Откуда: Україна

Re: Контроллер

Сообщение pirat9629 22 авг 2012, 12:51

http://vk.com/app3083407 вот что у меня вышло...
как заставить камеру следовать за кораблем нормально
pirat9629
UNIт
 
Сообщения: 72
Зарегистрирован: 20 мар 2012, 21:16
Откуда: Україна


Вернуться в Почемучка

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 31