Unity-黑暗之魂複刻-Lockon

祝你萬事順利 2022-01-07 21:49:35 阅读数:768

unity- unity 黑暗 lockon

接入Button的信號 在JoystickInput中聲明新的ButtonButton(buttonJstick),聲明新的Bool(lockOn),lockOn的值為buttonJstick的OnPressed的值。 檢測是否有lockOn目標 使用Physics.OverlapBox函數,檢測一個區域內全部的Collider,函數返回一個Collider[]。 在調用OverlapBox的時候,在LayerMask層傳入一個Mask,進行某一個層的遮罩

public void LockUnlock()
{
//print("lockUnlock");
if (lockTarget == null)
{
//lock obj
Vector3 boxCenter = model.transform.position + new Vector3(0, 1, 0) + model.transform.forward * 4.0f;
Collider[] cols = Physics.OverlapBox(boxCenter, new Vector3(0.5f, 0.5f, 4f),model.transform.rotation,LayerMask.GetMask("Enemy"));
foreach (var item in cols)
{
print(item);
}
}
else
{
//release lock
}
}

在有lockTarget的情况情况下選擇lockOn,有可以鎖定的目標時,直接切換lockOn的Target,在沒有lockTarget或者target是同樣的時候,取消lock

public void LockUnlock()
{
Vector3 boxCenter = model.transform.position + new Vector3(0, 1, 0) + model.transform.forward * 4.0f;
Collider[] cols = Physics.OverlapBox(boxCenter, new Vector3(0.5f, 0.5f, 4f),model.transform.rotation,LayerMask.GetMask("Enemy"));
if (cols.Length < 1)
{
lockTarget = null;
}
else
{
foreach (var item in cols)
{
if (lockTarget == item.gameObject)
{
lockTarget = null;
break;
}
lockTarget = item.gameObject;//找到第一個Collider直接退出
break;
}
}
}

修改Camera的代碼,在有lockTarget的時候,攝像機直接鎖定Target。

添加LockOn時候的鎖定圖標 同時在LockOn的時候同時設置LockOn的State

LockOn下的BlendTree 將BlendType設置為2DFreeformDirectional 前後左右分別設置動畫,由於左右沒有充足的動畫,這裏在向左走的時候將時間設置為-1,相當於向右的倒向播放。

BlendTree.PNG

版权声明:本文为[祝你萬事順利]所创,转载请带上原文链接,感谢。 https://gsmany.com/2022/01/202201072149348684.html