本文主要是介绍黑魂复刻游戏的玩家控制器(锁定状态)——Unity随手记(2021.6.7),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- 今天实现的内容:
- 新增锁定输入
- 锁定和解锁的代码逻辑和摄像机代码逻辑
- 锁定的提示UI
- 锁定的控制器代码逻辑
- 锁定的动画
- 锁定状态下的翻滚和跳跃
- 自动解除锁定
- BUG以及缺陷:
- 值得注意的:
今天实现的内容:
新增锁定输入
为输入模块添加锁定键和锁定信号,更新信号。
--- IPlayerInputpublic bool lockOn; //锁定信号--- JoystickInputpublic MyButton buttonLockOn = new MyButton(); //锁定键// Update is called once per framevoid Update(){// 更新按键buttonLockOn.Tick(Input.GetButton(btnRS));// 锁定信号lockOn = buttonLockOn.onPressed;
锁定和解锁的代码逻辑和摄像机代码逻辑
首先,要锁定目标,先要确定要锁定的目标是什么。我们使用Physics.OverlapBox来得到指定盒子区域内的碰撞体。
锁定需要始终将摄像机对准目标。所以我们在CameraController中添加新方法LockOn_or_Unlock
用来处理锁定解锁逻辑,然后在PlayerController中调用该方法。
// 摄像机锁定/解除锁定public void LockOn_or_Unlock(){// 尝试去锁定一个Vector3 tmp_modelCenter = modelGO.transform.position + Vector3.up; //获得模型的中心Vector3 tmp_boxCenter = tmp_modelCenter + modelGO.transform.forward * 5.0f; //得到OverlapBox的中心Collider[] cols = Physics.OverlapBox(tmp_boxCenter, //通过OverlapBox尝试获取范围内Enemy标签的碰撞体new Vector3(1.0f, 1.0f, 5.0f),modelGO.transform.rotation,LayerMask.GetMask("Enemy"));if (cols.Length != 0 && lockTarget == null){//如果得到碰撞体并且没有锁定目标 将第一个赋值给lockTargetlockTarget = cols[0].gameObject;lockonIcon.enabled = true
这篇关于黑魂复刻游戏的玩家控制器(锁定状态)——Unity随手记(2021.6.7)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!