Обход препятствий в раннере - Форум Игроделов
Пт, 03 Май 2024, 16:20 
 
Приветствую Вас Гость Главная | Регистрация | Вход
Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум Игроделов » UNITY3D » HELP & FAQ » Обход препятствий в раннере (Обход препятствий в раннере)
Обход препятствий в раннере
santosxzДата: Вс, 19 Июл 2015, 00:11 | Сообщение # 1
Нет аватара
 
Сообщений: 3
Награды: 0
Репутация: 0
Статус: Offline
Объект(Игрок) двигается по прямой, и я не могу сделать так что бы когда перед ним появляется препятствие(с тэгом "trafficCar" и "Obstacle ) он его обходил самостоятельно, сделал по туториалу по рейкастам не работает как надо, помогите пожалуйста как правильно сделать, в скрипте присутствует управление кнопками и для андроида управление акселерометром, их по сути нужно заменить на рейкасты.Заранее благодарен

float moveHorizontal ;
#if UNITY_IOS || UNITY_ANDROID || UNITY_WP8

float smoothX = Input.acceleration.x ;
if(smoothX < -0.5f && smoothX < 0) smoothX = Mathf.Lerp(smoothX,-1,Time.deltaTime/6); //smoothX = -1;
else if(smoothX > 0.5f ) smoothX = Mathf.Lerp(smoothX,1,Time.deltaTime/6); ;

moveHorizontal = smoothX * 2 ;

#endif

#if UNITY_EDITOR || UNITY_WEBPLAYER
moveHorizontal = Input.GetAxis ("Horizontal");

Vector3 Centr;
Vector3 Left;
Vector3 Right;
Centr = transform.position;
Left = transform.position;
Right = transform.position;
Centr.y += RayHeight;
Left.y += RayHeight;
Right.y += RayHeight;
Vector3 forward = transform.TransformDirection(Vector3.forward) * 5;
Debug.DrawRay(Centr, transform.forward*RayLenght, Color.green);
Debug.DrawRay(Left, (transform.forward+transform.right*-.5f)*RayLenght, Color.green);
Debug.DrawRay(Right, (transform.forward+transform.right*.5f)*RayLenght, Color.green);
RaycastHit hit;

if(Physics.Raycast(Centr,transform.forward, out hit, 9)) {
if(hit.collider.gameObject.tag == "trafficCar" ||hit.collider.gameObject.tag == "Obstacle"){
//transform.Rotate(Vector3.up, 90 * 5* Time.smoothDeltaTime);
//moveHorizontal =+2f;
moveHorizontal = Mathf.Lerp(moveHorizontal,-1,Time.deltaTime/6);
Debug.DrawRay(Centr,(transform.forward)*RayLenght, Color.red);
//Debug.DrawRay(transform.position, transform.forward, Color.red);
}
}
if(Physics.Raycast(Left,(transform.forward+transform.right*-.5f)*RayLenght, out hit, 8)) {
if(hit.collider.gameObject.tag == "trafficCar" ||hit.collider.gameObject.tag == "Obstacle"){
//transform.Rotate(Vector3.up, 90 * 2* Time.smoothDeltaTime);
//moveHorizontal =-2f;
moveHorizontal = Mathf.Lerp(moveHorizontal,-1,Time.deltaTime/6);
//Debug.DrawRay(transform.position, (transform.forward+transform.right*-.5f)*RayLenght, Color.red);
Debug.DrawRay(Left,(transform.forward+transform.right*-.5f)*RayLenght, Color.red);
}
}
if(Physics.Raycast(Right,(transform.forward+transform.right*.5f)*RayLenght, out hit, 8)) {
if(hit.collider.gameObject.tag == "trafficCar" ||hit.collider.gameObject.tag == "Obstacle"){
//moveHorizontal =+2f;
moveHorizontal = Mathf.Lerp(moveHorizontal,1,Time.deltaTime/6);
//transform.Rotate(Vector3.up, -90 * 2* Time.smoothDeltaTime);
Debug.DrawRay(Right,(transform.forward+transform.right*.5f)*RayLenght, Color.red);
//Debug.DrawRay(Right, (transform.forward+transform.right*.5f)*RayLenght, Color.green);

}

}


Сообщение отредактировал santosxz - Вс, 19 Июл 2015, 00:11
 
СообщениеОбъект(Игрок) двигается по прямой, и я не могу сделать так что бы когда перед ним появляется препятствие(с тэгом "trafficCar" и "Obstacle ) он его обходил самостоятельно, сделал по туториалу по рейкастам не работает как надо, помогите пожалуйста как правильно сделать, в скрипте присутствует управление кнопками и для андроида управление акселерометром, их по сути нужно заменить на рейкасты.Заранее благодарен

float moveHorizontal ;
#if UNITY_IOS || UNITY_ANDROID || UNITY_WP8

float smoothX = Input.acceleration.x ;
if(smoothX < -0.5f && smoothX < 0) smoothX = Mathf.Lerp(smoothX,-1,Time.deltaTime/6); //smoothX = -1;
else if(smoothX > 0.5f ) smoothX = Mathf.Lerp(smoothX,1,Time.deltaTime/6); ;

moveHorizontal = smoothX * 2 ;

#endif

#if UNITY_EDITOR || UNITY_WEBPLAYER
moveHorizontal = Input.GetAxis ("Horizontal");

Vector3 Centr;
Vector3 Left;
Vector3 Right;
Centr = transform.position;
Left = transform.position;
Right = transform.position;
Centr.y += RayHeight;
Left.y += RayHeight;
Right.y += RayHeight;
Vector3 forward = transform.TransformDirection(Vector3.forward) * 5;
Debug.DrawRay(Centr, transform.forward*RayLenght, Color.green);
Debug.DrawRay(Left, (transform.forward+transform.right*-.5f)*RayLenght, Color.green);
Debug.DrawRay(Right, (transform.forward+transform.right*.5f)*RayLenght, Color.green);
RaycastHit hit;

if(Physics.Raycast(Centr,transform.forward, out hit, 9)) {
if(hit.collider.gameObject.tag == "trafficCar" ||hit.collider.gameObject.tag == "Obstacle"){
//transform.Rotate(Vector3.up, 90 * 5* Time.smoothDeltaTime);
//moveHorizontal =+2f;
moveHorizontal = Mathf.Lerp(moveHorizontal,-1,Time.deltaTime/6);
Debug.DrawRay(Centr,(transform.forward)*RayLenght, Color.red);
//Debug.DrawRay(transform.position, transform.forward, Color.red);
}
}
if(Physics.Raycast(Left,(transform.forward+transform.right*-.5f)*RayLenght, out hit, 8)) {
if(hit.collider.gameObject.tag == "trafficCar" ||hit.collider.gameObject.tag == "Obstacle"){
//transform.Rotate(Vector3.up, 90 * 2* Time.smoothDeltaTime);
//moveHorizontal =-2f;
moveHorizontal = Mathf.Lerp(moveHorizontal,-1,Time.deltaTime/6);
//Debug.DrawRay(transform.position, (transform.forward+transform.right*-.5f)*RayLenght, Color.red);
Debug.DrawRay(Left,(transform.forward+transform.right*-.5f)*RayLenght, Color.red);
}
}
if(Physics.Raycast(Right,(transform.forward+transform.right*.5f)*RayLenght, out hit, 8)) {
if(hit.collider.gameObject.tag == "trafficCar" ||hit.collider.gameObject.tag == "Obstacle"){
//moveHorizontal =+2f;
moveHorizontal = Mathf.Lerp(moveHorizontal,1,Time.deltaTime/6);
//transform.Rotate(Vector3.up, -90 * 2* Time.smoothDeltaTime);
Debug.DrawRay(Right,(transform.forward+transform.right*.5f)*RayLenght, Color.red);
//Debug.DrawRay(Right, (transform.forward+transform.right*.5f)*RayLenght, Color.green);

}

}

Автор - santosxz
Дата добавления - 19 Июл 2015 в 00:11
Форум Игроделов » UNITY3D » HELP & FAQ » Обход препятствий в раннере (Обход препятствий в раннере)
  • Страница 1 из 1
  • 1
Поиск:
Загрузка...

Game Creating CommUnity © 2009 - 2024