Хорошо: если я правильно понимаю, вы хотите переместить один конец стержня вверх, в то время как другой остается там, где он есть, как теннисная бита? в то время как другой остается там, где он есть, я бы предложил использовать родительский объект. Имейте родительский объект (Parent_Rod), сделайте прут дочерним по отношению к вышеупомянутому родителю.
Теперь установите, чтобы корень Child_Rod, который вы не хотите перемещать, находится в корне Parent_Rods. Таким образом, неиспользуемый конец вашего стержня должен быть в [0, 0, 0,] родителя. Тогда вращайте не сам объект стержня, а его родителя. Таким образом, вращение будет происходить вокруг преобразования родителя, где находится один конец вашего стержня.
Относительно силы столкновения: вы не должны использовать гравитацию на вашем стержне и делать твердое тело кинематическим. Таким образом, вы можете легко контролировать вращение родителя с помощью скрипта, в то время как сам стержень не подвержен столкновениям.
Надеюсь, это поможет, надеюсь, я правильно понял вопрос.
То, что это говорит, является этим, если Вы делаете:
int? x = 5;
object y = x; // Boxing
Вы заканчиваете с помещенным в коробку int
, не помещенное в коробку Nullable<int>
. Так же, если Вы делаете:
int? x = null; // Same as new Nullable<int>() - HasValue = false;
object y = x; // Boxing
Затем y заканчивается как нулевая ссылка.
То, что это означает, является этим, если Вы делаете:
int? i = 5;
object o = i;
это - "интервал" (5), который упаковывается, не "интервал?" (5). Если x был пустым (! HasValue), o был бы пустым, не поле вокруг пустого "интервала?"
Затем, когда Вы распаковываете:
i = (int?)o;
Если o является пустым, я становлюсь пустым "интервалом?"; иначе, эти 5 распаковывается и используется для создания "нового интервала? (5)".
В основном Вы не были должны (за исключением обмана) смочь получить помещенное в коробку nullable<T>
непосредственно - только помещенное в коробку T
Если a Nullable<T>
null
, это будет упаковано как нулевая ссылка и не будет вести себя как помещенный в коробку тип значения с HasValue = true
.
На самом деле, для реализования этой опции требовалось, что тот CLR внутренне поддерживает Nullable<T>
введите и рассматривайте его по-другому. Разработчики не могут записать свой собственный тип, который работает как Nullable<T>
.
Стоит отметить, что это было одной из последней.NET 2,0 функции. В ранних бетах, Nullable<T>
ведший себя точно так же, как нормальная структура. В финальной версии это было изменено на поле к нулевой ссылке. Это изменение конкретно повреждало для SQL Server команду CLR, и они должны были изменить некоторый фундаментальный материал для него.