Жека огромное спасибо, все доходчиво! На основе советов сделал целый класс который передается в функцию с разными наборами параметров для тряски, не только длительность но и другие
)).
Сейчас встал в ступор снова. Задача, рейкастом выделить объекты на плоскости. Написал код, рейкаст исправно отрисовывает курсор в месте пересечения, но ни в какую не ловит объекты, которые на нем расположены. В чем беда? Layer стоит у объектов Default
using UnityEngine;
using System.Collections;
public class SelectUnit : MonoBehaviour {
public Transform Cursor;
public Camera RealCamera;
public float MouseXCord, MouseYCord;
private Vector3 velocityCur = Vector3.zero;
public Ray Position_on_plane;
public RaycastHit RayInfo;
public Vector3 PointRay, CursorPosition;
public GameObject Unit_was_Hit;
void Start () {
}
void Update () {
MouseXCord = Input.mousePosition.x;
MouseYCord = Input.mousePosition.y;
SetPosition_on_plane ();
Analize_Hit_Unit ();
}
public void SetPosition_on_plane () {
Position_on_plane = RealCamera.ScreenPointToRay(new Vector3(MouseXCord,MouseYCord,0f)); // пусить луч в координаты мыши
if (Physics.Raycast(Position_on_plane, out RayInfo, Mathf.Infinity)) // если пересечение то
{
PointRay = RayInfo.point; // получаем информацию о столкновении
CursorPosition = new Vector3(Mathf.Round(PointRay.x),0f,Mathf.Round(PointRay.z)); //позиция курсора на плоскости
}
Cursor.position = Vector3.SmoothDamp(Cursor.position,CursorPosition,ref velocityCur,0.1f); // плавно переместить курсор в точку назначения
}
public void Analize_Hit_Unit () {
if (RayInfo.transform!=null) Unit_was_Hit = (GameObject)RayInfo.collider.gameObject; // вот тут происходит поиск объекта
}
}
Пробовал информацию доставать и из коллайдера и из трансформа, результат такой же.