Unity学习记录(3)——角色控制

本文介绍了如何在Unity中创建一个名为Player的游戏对象,包括创建胶囊体、分离逻辑组件和视觉效果、使用公共与私有属性管理输入和角色移动,以及优化帧频的使用。
摘要由CSDN通过智能技术生成

Create empty 修改名称为Player。

在二级目录创建capsule。

在右侧编辑栏可以修改自己想要的形状和位置。

在父游戏对象上,可以附加我们想要的所有逻辑组件;在子视觉,可以添加或替换任何我们想要的视觉效果。总是要将将游戏对象的逻辑与视觉效果分开。

创建脚本后,直接将文件拖至右边。

简单输入管理器

GetKey:只要按住该键,就会一直返回值(移动

GetKeyDown:返回按键被按下时的单帧图像(跳跃

小测试程序

        if (Input.GetKey(KeyCode.W)) {
            Debug.Log("Pressing!");     //在控制台中打印一条信息
        }
        else {
            Debug.Log("-");
        }

在代码中,我们要将输入向量与实际运动分离。

设置为public的话,

设置速度之后可以直接在窗口看到修改,但会将其暴露给整个代码库中的所有其他类。为了减少复杂性,我们需要尽量减少访问。

所以我们将其修改为下面这样:

仍然私有,只能由代码修改,但在编辑器处可以编辑。

查看帧频:

角色移动的代码如下:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Player : MonoBehaviour
{
    [SerializeField] private float moveSpeed = 7f;  //虽然是私有的但仍然能在编辑器修改

    private void Update() {     //在每一帧都运行代码
        Vector2 inputVector = new Vector2(0, 0);

        if (Input.GetKey(KeyCode.W)) {
            inputVector.y = +1;
        }
        if (Input.GetKey(KeyCode.S)) {
            inputVector.y = -1;
        }
        if (Input.GetKey(KeyCode.A)) {
            inputVector.x = -1;
        }
        if (Input.GetKey(KeyCode.D)) {
            inputVector.x = +1;
        }
        inputVector = inputVector.normalized;   //对输入向量进行归一化处理,移动的时候向各个方向都会有一样的速度

        Vector3 moveDir = new Vector3 (inputVector.x, 0f, inputVector.y);
        transform.position += moveDir * moveSpeed * Time.deltaTime;     //正确地使用帧频
        Debug.Log(Time.deltaTime);
    }



}

写完Ctrl+s保存。

效果如图:


 

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值