foreach TraceActors(class'Actor', aHitActor, vHitLocation, vHitNormal, vTraceEnd, vTraceStart)
// Ищем актеров, которых зацепили оружием
vTraceEnd = GetSocketLocation(nTipSocket); // для наконечника
vTraceStart = GetSocketLocation(nHiltSocket); // для рукоятки
// Определяем текущее положение сокетов оружия
local Vector vHitLocation, vHitNormal;
local Vector vTraceStart, vTraceEnd;
В функцию GetSocketLocation() передается имя сокета (его можно вынести в архетип, что позволит более гибко настраивать холодное оружие прямо в редакторе UnrealEd UDK), и определяются его координаты. Теперь мы можем использовать стандартный метод TraceActors() для нахождения объектов, которые пересекает в данный момент наше холодное оружие:
skMesh.GetSocketWorldLocationAndRotation(SocketName, vLocation, rRotation);
if(skMesh != None && skMesh.GetSocketByName(SocketName) != None){
skMesh = SkeletalMeshComponent(Mesh);
local SkeletalMeshComponent skMesh;
function Vector GetSocketLocation(Name SocketName)
Трассировка луча (Trace)Да-да, нам на помощь придет обычная трассировка луча. Но чтобы было удобно находить точки для трассировки, оружие должно быть выполнено в виде SkeletalMesh и к нему должны быть присоединены два сокета: один неподалеку от рукоятки холодного оружия, второй на кончике оружия. Тогда в коде мы легко сможем в любой момент определить положение этих сокетов в пространстве методом:
Проблема в том, что для холодного оружия в UDK нет встроенного механизма определения столкновений (коллизий collisions). Да и не только для холодного оружия. Вообще нельзя отдельно для прикрепленных объектов просчитать столкновение. Считается только один единственный Collision Cylinder для всего персонажа, а прикрепленные объекты теряют свои коллизионные примитивы, даже если они у них были. Все это справедливо для режима ходьбы (PHYS_Walking) так уж устроен движок Unreal Engine. Давайте разбираться, как это ограничение обойти.
Если огнестрельное оружие встроено в Unreal Development Kit (UDK) по умолчанию и может быть использовано в собственной игре практически без изменений (за исключением, разве что самой модели оружия), то с холодным оружием (ножами, мечами, палками, дубинками и кусками арматуры) придется повозиться самому.
Создание холодного оружия в UDK
ВойтиЗапомнить меня
Логин или эл. почта
Создание холодного оружия в UDK / Создание игр / Dimanjy
Комментариев нет:
Отправить комментарий