Unity3D 学习笔记(一) 创建3d人物及输入控制信号

学习内容:b站傅老师的U3D黑魂复刻课程

创建地板,添加地板砖材质

调整大小,调整贴图
在这里插入图片描述

创建一个胶囊,并添加角色模型

取消胶囊模型的渲染,调整collider,添加rigidbody

在这里插入图片描述

创建输入控制脚本

创建playerinput添加给Playerhandle(空胶囊)

定义输入按键

    [Header("-------------keys--------------")]

    public string keyUp = "w";

    public string keyDown = "s";

    public string keyLeft = "a";

    public string keyRight = "d";

定义信号



[Header("--------------signals----------------")]  

    [SerializeField]

    private float Dup;

    [SerializeField]

    private float Dright;

    [SerializeField]

    private float velocityDup;

    [SerializeField]

    private float velocityDright;

    private float targetUp;

    private float targetRight;

在update中计算



void Update()

    {

        targetUp = (Input.GetKey(keyUp)?1.0f:0.0f) - (Input.GetKey(keyDown)?1.0f:0.0f);//是否向上

        targetRight = (Input.GetKey(keyRight)?1.0f:0.0f) - (Input.GetKey(keyLeft)?1.0f:0.0f);//是否向右

        Dup = Mathf.SmoothDamp(Dup,targetUp,ref velocityDup,0.1f);

        Dright = Mathf.SmoothDamp(Dup,targetRight,ref velocityDright,0.1f);

    }

![在这里插入图片描述](https://img-blog.csdnimg.cn/20200216210236716.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2t6ejY5OTE=,size_16,color_FFFFFF,t_70)

验证按下按键时,信号可以正确变化。

但是当同时按下w和d或者是其他斜向运动,速度最大值可以达到单一方向运动的根号2倍,需要将方块映射到圆中。

因此添加一个新的映射方法


    private Vector2 SquareToCircle(Vector2 input)

    {

        Vector2 res= Vector2.zero;

        res.x = input.x*Mathf.Sqrt(1-(input.y *input.y) /2);

        res.y = input.y*Mathf.Sqrt(1-(input.x *input.x) /2);

        return res;

    }

添加新变量



    public float Dmag;

    public Vector3 Dvec;

在update中进行计算


        Vector2 tempDAxis = SquareToCircle(new Vector2(Dright,Dup));

        Dmag = Mathf.Sqrt(tempDAxis.x * tempDAxis.x +tempDAxis.y * tempDAxis.y);

        Dvec = tempDAxis.x * transform.right + tempDAxis.y * transform.forward;
    

在这里插入图片描述

可得正确效果

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

豆沙粽子好吃嘛!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值