Unity 实现人物移动_unity人物移动_Sky酱~的博客-程序员秘密

技术标签: unity  

首先创建一个专门控制移动的脚本(角色,npc都能用),命名为Movement,但是不带Input Manager,Manager在角色/npc脚本写。

此脚本挂载物体必为刚体,故用[RequireComponent(typeof (Rigidbody))]确保物体有刚体组件。

在Awake里调用刚体组件

在FixedUpdate里运用MovePosition方法,该方法是将物体移动到指定位置,参数为物体当前位置+当前输入值(方向)×速度×时间

Ps:希望方向输入值范围不超过1,则新写一个方法,命名为SetMovementInput,运用ClampMagnitude方法使输入的三维变量input不超过1

源代码如下

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

[RequireComponent(typeof (Rigidbody))]
public class Movement : MonoBehaviour
{
    private Rigidbody rig;

    public Vector3 CurrentInput;
    public float speed;

    private void Awake()
    {
        rig = GetComponent<Rigidbody>();
    }

    private void FixedUpdate()
    {
        rig.MovePosition(rig.position+CurrentInput*speed*Time .deltaTime);//移动到目标位置,但有障碍过不去
    }

    public void SetMovementInput(Vector3 input)
    {
       CurrentInput =  Vector3.ClampMagnitude(input, 1f);
    }
}

在角色控制脚本中,首先还是在Awake中调用Movement脚本,然后使用其中的SetMovementInput方法,传入一个三维变量值,x为Horizontal,y为0,z为Vertical。

源代码如下,没有直接在Update里写是为了以后方便维护。

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

public class Character : MonoBehaviour
{
    private Movement movement;

    private void Awake()
    {
        movement = GetComponent<Movement>();
    }

    private void Update()
    {
        UpdateMovementInput();
    }

    private void UpdateMovementInput()
    {
        movement.SetMovementInput(new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical")));
    }
}

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_63136168/article/details/123698490

智能推荐

测试技能树(职业发展路线)_justheretobe的博客-程序员秘密

测试技能树(职业发展路线)转自: 51cto.com

yolox改进--添加Coordinate Attention模块(CVPR2021)_yolox pafpn_不会吃草的猪的博客-程序员秘密

yolox改进--添加Coordinate Attention模块。Coordinate Attention Module,同SE、CBAM等模块一样,作为即插即用的注意力机制,在yolov5、yolox等轻量级网络中有着重要的作用。本文介绍的CAM+yolox在我的数据集上,mAP比不添加的时候提高了0.02个点,相比使用CBAM提高了0.01个点,效果还是很可观的。.........

CMD中获取命令返回值_「已注销」的博客-程序员秘密

例如指令:tasklist|find /i "mongod.exe"返回的结果是:C:\Users\Ruby&gt;tasklist|find /i "mongod.exe"mongod.exe 8364 Console 2 165,864 K可以通过一起bat脚本读取值:@echo off for ...

黑客学习路线_我只想做第一的博客-程序员秘密_学习黑客路线

转载 :https://www.cnblogs.com/HackKen/p/7732515.html引:在任何时候,我都是孤独的。最近在信安群里也有人问过我,我是如何学习黑客和渗透测试的,在这里,我就把我的学习路线写一下,让新手和小白们不再迷茫,少走弯路,拒绝时间和金钱上的浪费!第一周:入门在学习的时候,你起码需要对常见的黑客术语需要掌握,了解术语的话可以去看看这里的百度文库,写的还是可...

以太坊又一次大拥堵何去何从?深度对话美图以太坊DPoS算法实现团队_高可用架构的博客-程序员秘密

最近,以太坊又一次出现大拥堵,美图基于以太坊框架实现了 DPoS 算法并且对代码进行了开源(链接见文末),希望借助此方案能让以太坊发展有更多的选择的可能。图:最近一周以太...

Spring Cloud Eureka 注册中心集群搭建,Greenwich 最新版!_weixin_33966095的博客-程序员秘密

Spring Cloud 的注册中心可以由 Eureka、Consul、Zookeeper、ETCD 等来实现,这里推荐使用 Spring Cloud Eureka 来实现注册中心,它基于 Netflix 的 Eureka 做了二次封装,完成分布式服务中服务治理的功能,微服务系统中的服务注册与发现都通过这个注册中心来进行管理。jin就来分享一个 Eureka 注册中心玩法,从 0 到分布式集群一步...

随便推点

vue中from表单和el-table一起使用时table中的表单校验问题_swift#23的博客-程序员秘密

之前我在调试项目的过程中要对一个表单内容进行数据合法性校验,然后开发过程中发现嵌套的el-table中的form-item校验异常,就是我已经让数据合法了但是还是一直报数据校验错误。讲过查阅了资料发现时prop设置的问题,因为el-table显示的对象属于数组,而里面的el-item属性应该设置为arrayobj.index.value的格式。这样才能保证整个模块的数据校验正确性。...

利用多拨技术将100M宽带免费扩展到1000M_archrillsman的博客-程序员秘密_联通宽带多播

大家好,我叫小沈阳。今天教大家利用多拨技术将家里的100M宽带扩展到1000M。首先需要购买一个软路由,某宝上几百一个。推荐J1900的。主要分为3步如下所示:1.破解光猫,将光猫切换到桥连模式。2.软路由切换到PPPOE模式。3.软路由多拨完成宽带叠加。1.0获取超级管理员账号密码(楼主是联通的宽带,光猫型号是tewa-800g)将网线插到光猫上输入http:/...

【Android每日一问】手撸单例以及优缺点分析,2021Android开发社招面试总结_智恩架构师的博客-程序员秘密_android 每日一问

优点:获取对象的速度快;避免了多线程的同步问题。缺点:类加载过程慢。饿汉变种单例(静态内部类)public class Singleton {private Singleton() {}private static class SingletonHolder{private static final Singleton INSTANCE = new Singleton();}public static Singleton getInstance() {return Singleto.

Springboot+SpringSecurity+SpringSecurityOauth2+JWT实现第三方登录(认证授权与资源服务)_偶系渣渣灰的博客-程序员秘密

最近朋友问我有没有做过Oauth2的第三方登录,请求认证并根据认证返回数据去访问资源服务。发现单点登录做过很多,但是这种第三方的登录认证确实没做过,出于兴趣在网上找了很多资料,自己动手整理了下。PS:网上很多是基于内存的,但是实际项目中基本上都是从数据库获取相关数据,于是分享一个基于数据库的第三方登录实现。(在实现过程中因为网上大部分资料描述不清晰,走了很多弯路,同时附上自己个人的一些备注)。源码也同时在文章末尾进行分享,希望能帮助各位码友。废话不多说,下面开始:给出网上一个比较好的流程设计图:(实际

聚石塔RDS数据备份与迁移_北半球的夜的博客-程序员秘密_聚石塔数据库迁移

一、数据备份mysqldump -h rm-k2jgmq0e63g1594w7.mysql.zhangbei.rds.aliyuncs.com -u snake -pZyTiLSpAdd3pBiaT --set-gtid-purged=OFF snakeAdmin | gzip &gt; snakeAdmin.sql.gz

推荐文章

热门文章

相关标签