case2修改

This commit is contained in:
2025-11-26 17:08:52 +08:00
parent 744e42c2f8
commit ef1c526e4f
3 changed files with 39 additions and 11 deletions

View File

@@ -91,7 +91,7 @@ head:
<img src="/image/studycase1/配置虚拟相机.png" data-fancybox="gallery"/>
### 创建 InputActions
- 在项目窗口右键 `Create > Input Actions`,命名为 `PlayerInputActions`
- 创建`Resources`文件夹,右键 `Create > Input Actions`,,命名为 `PlayerInputActions`
<img src="/image/studycase1/创建InputActions.png" data-fancybox="gallery"/>

View File

@@ -108,9 +108,8 @@ head:
<img src="/image/studycase2/设置move end到moving的条件.png" data-fancybox="gallery"/>
### 编写脚本`ThirdCharacterController.cs`
- `Assets\Scripts\StudyCase2`创建脚本 `ThirdCharacterController`
- 修改`Assets\Scripts\StudyCase2` 下脚本 `ThirdCharacterController`
```csharp
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.InputSystem;
@@ -118,17 +117,32 @@ namespace StudyCase2
{
public class ThirdCharacterController : MonoBehaviour
{
public CharacterController characterController;
public Animator animator;
public Transform forward;
public Transform model;
public Cinemachine.CinemachineVirtualCamera vCam;
CharacterController characterController;
InputActionAsset inputAction;
Animator animator;
Transform forward;
Transform model;
Cinemachine.CinemachineVirtualCamera vCam;
public float moveSpeed = 5f;
public float jumpSpeed = 2f;
public float turnSpeed = 10f;
public float gravity = 10f;
Vector3 moveDir;
Vector2 moveInput;
private void Awake()
{
characterController = GetComponent<CharacterController>();
forward = transform.Find("Forward");
model = transform.Find("Model");
animator = model.GetComponentInChildren<Animator>();
vCam = transform.Find("Virtual Camera").GetComponent<Cinemachine.CinemachineVirtualCamera>();
inputAction = Resources.Load<InputActionAsset>("Player");
inputAction.FindAction("Move").started += OnMove;
inputAction.FindAction("Move").performed += OnMove;
inputAction.FindAction("Move").canceled += OnMove;
inputAction.FindAction("Jump").performed += OnJump;
inputAction.Enable();
}
private void Update()
{
moveDir = new Vector3(moveInput.x, moveDir.y, moveInput.y);
@@ -162,9 +176,22 @@ namespace StudyCase2
}
```
### 代码讲解
在Awake中自动获取组件移除PlayerInput
```csharp
//获取动画控制器
public Animator animator;
private void Awake()
{
characterController = GetComponent<CharacterController>();
forward = transform.Find("Forward");
model = transform.Find("Model");
animator = model.GetComponentInChildren<Animator>();
vCam = transform.Find("Virtual Camera").GetComponent<Cinemachine.CinemachineVirtualCamera>();
inputAction = Resources.Load<InputActionAsset>("Player");
inputAction.FindAction("Move").started += OnMove;
inputAction.FindAction("Move").performed += OnMove;
inputAction.FindAction("Move").canceled += OnMove;
inputAction.FindAction("Jump").performed += OnJump;
inputAction.Enable();
}
```
```csharp
//设置动画控制器参数
@@ -173,6 +200,7 @@ namespace StudyCase2
animator.SetBool("Move", true);
```
### Player节点设置
- 新增 `Animator` ,其他同StudyCase1
挂载studycase2的控制器移除PlayerInput组件
<img src="/image/studycase2/重载控制器.png" data-fancybox="gallery"/>
完成以上步骤,即可得到一个带动画的第三人称控制器。[项目地址](http://home.gtuantuan.online:8300/TuanTuan/StudyCase)

Binary file not shown.

After

Width:  |  Height:  |  Size: 888 KiB