Unity人物移动的几种方法

Unity人物移动的几种方法

  • 方法一:transform.Translate
    • 世界坐标系移动
    • 自身移动的案例
  • 方法二:CharacterController.Move(vector dir)
    • 按照世界坐标轴移动
    • 按照自身坐标轴移动
  • 方法三:CharacterController.SimpleMove(vector dir)慎用
    • 按照世界坐标轴移动:
    • 按照自身坐标轴移动:

方法一:transform.Translate

再讲之前先知道Vector3.forward就是朝前也就是Z轴的方向,如果不明白的可以看一下图

在这里插入图片描述

世界坐标系移动

代码中写的是根据世界坐标轴的z轴方向移动,然后再看一下右上角的世界坐标轴发现是根据世界坐标轴的z轴移动是没有问题的,这里在观察一个问题就是这个物体的自身坐标轴的z轴是朝向左侧的,这个就是因为方法第二个参数的作用,Space.World为根据世界坐标轴方向移动,Space.Self则是根据自身的方向移动

	// Update is called once per framevoid Update () {transform.Translate(Vector3.forward * Time.deltaTime * 10f, Space.World);}

在这里插入图片描述

自身移动的案例

下一行注释的一行就相当于上一行,这个方法默认有一个枚举是根据自身的坐标系来进行位移,也就是说这里写不写Space.self都一样。

	// Update is called once per framevoid Update () {transform.Translate(Vector3.forward * Time.deltaTime * 10f,Space.Self); //1//transform.Translate(Vector3.forward * Time.deltaTime * 10f); //2}

看一下效果:
在这里插入图片描述

方法二:CharacterController.Move(vector dir)

CharacterController.Move这个方法没有明确的枚举告诉我们是世界坐标系还是自身坐标系,所以这里通常transform.XXX(forward)来代表自身坐标,用Vector.XXX(forward)来代表世界坐标。
如下图所示:

按照世界坐标轴移动

在这里插入图片描述
代码如下:

	// Update is called once per framevoid Update () {chars.Move(Vector3.forward * Time.deltaTime * 10f);}

按照自身坐标轴移动

在这里插入图片描述
代码如下:

	// Update is called once per framevoid Update () {chars.Move(transform.forward * Time.deltaTime * 10f);}

方法三:CharacterController.SimpleMove(vector dir)慎用

为什么说慎用这个方法是因为这个移动是需要有某种基础来可以移动的

  1. 首先需要一个地面去让移动的物体在上面,如果没有则是不起到任何作用的
  2. 这个方法是自带刚体的,当使用时附带刚体效果自由下落,如果不使用时则没有刚体的自由下落效果
  3. 这个方法跟我上面介绍的两种方法速度机制不一样,不需要 * Time.delatetime 即可使用

效果图放在下面:

按照世界坐标轴移动:

在这里插入图片描述

代码如下:

	void Update () {chars.SimpleMove(Vector3.forward);}

按照自身坐标轴移动:

在这里插入图片描述

代码如下:

	void Update () {chars.SimpleMove(transform.forward);}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/298073.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

光耦继电器

光耦继电器(光电继电器) AQW282SX 282SZ 280SX 280SZ 284SX 284SZ 212S 212SX 21 2SZ 文章目录 光耦继电器(光电继电器)前言一、光耦继电器是什么二、光耦继电器的类型三、光电耦合器的应用总结前言 光耦继电器在工业控制、通讯、医疗设备、家电及汽车电子等领域得到广泛应…

【adb】电脑通过ADB向手机设备传输文件

具体步骤如下: Step1 下载ADB工具 下载最新版本的 ADB工具 !!! 注意:一定要是最新版本的ADB,否则很可能导致无法识别到手机。 将下载的ADB解压以后的文件如下图所示: Step2 添加环境变量 将 ABD 的路径 D:\platformtools &am…

VMware虚拟机安装Ubuntu系统教程

所使用的文件如下: VMware Workstation 17 Pro ubuntu-22.04.3-desktop-amd64.iso 一、ubuntu 命名规则及各版本一览表 1.ubuntu 命名规则: 例如:ubuntu 16.04 LTS 是长期维护版本;ubuntu 17.04 是新特性版本 前两位数字为发…

解决log4j多个日志都写到一个文件

之前客户端程序由于Websockt包依赖的log4j,就用log4j写日志了,Web用的log4j2没毛病。用log4j的多个logger的日志都写到一个文件里了,查了很多资料都没解决。今天闲了解决一下。 最后好使的配置 # 设置日志根 log4j.rootLogger INFO,Except…

《钢结构设计标准》中抗震性能化设计的概念

文章目录 0. 背景1. 前言2. 什么是抗震性能化设计3. 我国规范是如何实现性能化设计的4. 从能量角度理解性能化设计05. 《钢结构设计标准》抗震性能化设计的思路06. 《钢结构设计标准》抗震性能化设计的步骤 0. 背景 关于抗震性能化设计,之前一直理解的很模糊&#…

nodejs+vue+微信小程序+python+PHP的4s店客户管理系统-计算机毕业设计推荐

系统的功能结构是系统实现的框架,本系统的主要结构为管理员和用户、员工。管理员的功能为车辆信息管理、用户管理、售后服务管理、售后安排管理、完成售后管理等。 本系统实现了售后的在线申请与处理,方便了用户和管理员、员工三方的利益,提高…

【ctf】whireshark流量分析之tcp_杂篇

目录 简介 常考 图片类 提取png.pcap(常规) 异常的流量分析(*,特殊) john-in-the-middle(特殊) ​编辑 zip类 1.pcap(常规) 方法1(常规提取压缩包&…

Java - 工厂设计模式

Java - 工厂设计模式 一. 简介二. 例子2.1 定义抽象类2.2 定义子类2.3 创建工厂2.4 测试 三. JDK中使用工厂模式的案例 前言 这是我在这个网站整理的笔记,有错误的地方请指出,关注我,接下来还会持续更新。 作者:神的孩子都在歌唱 工厂设计模式…

useRef语法讲解

useRef useRef 用法 import { useRef, useState } from react import ./App.cssfunction App() {const userRef useRef<HTMLInputElement>(null)const [val, setVal] useState()const handleClick () > {userRef.current?.focus()setVal(userRef.current?.valu…

RPN网络在图像处理中的应用

RPN&#xff08;Region Proposal Network&#xff0c;区域建议网络&#xff09;是深度学习中用于目标检测的关键组件之一&#xff0c;它通常与后续的目标检测网络&#xff08;如Fast R-CNN、Faster R-CNN等&#xff09;结合使用。RPN的主要作用是生成候选目标区域&#xff0c;从…

nodejs+vue+微信小程序+python+PHP的旅游景点推荐系统-计算机毕业设计推荐

本课题的主要内容包括管理员和用户两个部分&#xff0c;管理员负责旅游相关信息的管理&#xff0c;包括景点信息、用户的预订信息以及用户信息的管理&#xff1b;正是采用计算机技术和网络设计的新型系统&#xff0c;可以有效的把旅游信息与网络相结合&#xff0c;为用户提供旅…

1 手写第一个Win32窗口程序

1 基础概念 什么是窗口&#xff1f; 答&#xff1a;窗口就是屏幕上的一片区域&#xff0c;接受用户的输入&#xff0c;显示程序的输出。可以包含标题栏、菜单栏、工具栏以及控件等。什么是句柄&#xff1f; 答&#xff1a; 作为一种管理和操作系统资源的机制&#xff0c;提供了…