Есть 2 объекта левый без Rigidbody а правый с Rigidbody(is Kinematic= false) через левый можно проходить насквозь а правый можно отодвигать.Как сделать так чтобы объект не отодвигался но и не проходить сквозь него?
без Rigidbody с Rigidbody Персонаж
Код персонажа
using System.Collections;
using UnityEngine;
public class Person_controller : MonoBehaviour {
public float rotationPeriod = 0.3f;
public float sideLength = 1f;
bool isRotate = false;
float directionX = 0;
float directionZ = 0;
Vector3 startPos;
float rotationTime = 0;
float radius;
Quaternion fromRotation;
Quaternion toRotation;
void Start () {
radius = sideLength * Mathf.Sqrt (2f) / 2f;
}
void Update () {
float x = 0;
float y = 0;
x = Input.GetAxisRaw ("Horizontal");
if (x == 0) {
y = Input.GetAxisRaw ("Vertical");
}
if ((x != 0 || y != 0) && !isRotate) {
directionX = y;
directionZ = x;
startPos = transform.position;
fromRotation = transform.rotation;
transform.Rotate (directionZ * 90, 0, directionX * 90, Space.World);
toRotation = transform.rotation;
transform.rotation = fromRotation;
rotationTime = 0;
isRotate = true;
}
}
void FixedUpdate() {
if (isRotate) {
rotationTime += Time.fixedDeltaTime;
float ratio = Mathf.Lerp(0, 1, rotationTime / rotationPeriod);
float thetaRad = Mathf.Lerp(0, Mathf.PI / 2f, ratio);
float distanceX = (-directionX * radius * (Mathf.Cos (45f * Mathf.Deg2Rad) - Mathf.Cos (45f * Mathf.Deg2Rad + thetaRad)))*sideLength;
float distanceY = radius * (Mathf.Sin(45f * Mathf.Deg2Rad + thetaRad) - Mathf.Sin (45f * Mathf.Deg2Rad));
float distanceZ = directionZ * radius * (Mathf.Cos (45f * Mathf.Deg2Rad) - Mathf.Cos (45f * Mathf.Deg2Rad + thetaRad));
transform.position = new Vector3(startPos.x + distanceX, startPos.y + distanceY, startPos.z + distanceZ);
transform.rotation = Quaternion.Lerp(fromRotation, toRotation, ratio);
if (ratio == 1) {
isRotate = false;
directionX = 0;
directionZ = 0;
rotationTime = 0;
}
}
}
}
Во-первых, в скрипте заменить **transform.position**
на **rigidbody.movePosition**
(перестанет проходить через левый).
Во-вторых, можно на правом кубике, rigidbody установить плотность(setDensity) высокое(не будет толкать правый).
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Как-то вот не разобрался, можно ли добавить в проект, допустим - консольного приложения, базу данных и задеплоить это всё хозяйство одним dll? Если...
Подскажите, есть ли возможность по кнопке или чекбоксу (в приложении C#) установить уровень UAC на максимум?
Надо сломать HashSet, для чего тредуется добавить в него объект, после этого изменить его (извне коллекции)Есть следующий класс: