很多游戏中,我们通过向前移动来控制角色到达目的地,
这要求我们的控制角色要直面目的地,当角色没有面对目标,
我们需要旋转过后再往前走,简单的往前可以是LookAt(),然后直接往前走。
有过程的旋转可以通过
复制代码
1
2
3Vector3 forwardDir = targetGameObject.transform.position - transform.position; forwardDir=forwardDir.normalized; transform.forward = Vector3.Lerp(transform.forward, forwardDir, CharacterState.Instance.rotateAroundSmoothing * Time.deltaTime);
语句来实现,但是这不能保证旋转过后再往前走。
所以下面给出旋转了再走的代码:
复制代码
1
2
3
4
5
6
7
8
9
10
11
12IEnumerator TurnAroundAndWalkToAim() { Vector3 lookAtTarget = target.transform.position - transform.position; Quaternion targetRotation = Quaternion.LookRotation(lookAtTarget, transform.up); while (Mathf.Abs((transform.rotation.eulerAngles - targetRotation.eulerAngles).y) > 0.1f) { transform.rotation = Quaternion.Lerp(transform.rotation, targetRotation, CharacterState.Instance.rotateAroundSmoothing * Time.deltaTime); yield return 0; } myController.SimpleMove(CharacterState.Instance.moveSpeed * transform.forward); }
这里0.1f可以改大改小。
使角色转弯则是在旋转的同时保持角色往前行进即可。
复制代码
1
2
3
4Vector3 targetDir = targetPos - transform.position; forwardDir=forwardDir.normalized; transform.forward = Vector3.Lerp(transform.forward, targetDir, CharacterState.Instance.rotateAroundSmoothing * Time.deltaTime); myController.SimpleMove(myState.moveSpeed * transform.TransformDirection(new Vector3(0, 0, 1)));
最后
以上就是长情纸鹤最近收集整理的关于控制角色转身之后进行运动以及使角色转弯的全部内容,更多相关控制角色转身之后进行运动以及使角色转弯内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复