首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将此统一运动脚本转换为刚体?

如何将此统一运动脚本转换为刚体?
EN

Stack Overflow用户
提问于 2021-11-23 08:51:48
回答 2查看 48关注 0票数 1

大家好,所以基本上我想知道如何才能将这个动作脚本更改为刚体。它以我想要的方式工作,用way改变方向,然后空间从那个方向向前移动,有点像,但我想把它转换成用rigidbody完成的,这样我就可以做碰撞了。谢谢!!

代码语言:javascript
运行
AI代码解释
复制
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Fly : MonoBehaviour
{

public float moveSpeed;
void Start()
{
    
}


void Update()
{
    if (Input.GetKey(KeyCode.Space))
    {
        transform.Translate(new Vector3(0,0,moveSpeed) * Time.deltaTime, Space.Self);
    }
    

    float rotatex = Input.GetAxis("Vertical");
    float rotatey = Input.GetAxis("Horizontal");
    
    transform.Rotate(0, rotatey, 0, Space.World);
    transform.Rotate(-rotatex * 0.5f, 0, 0);
}

}

EN

回答 2

Stack Overflow用户

发布于 2021-11-23 09:02:30

你所写的代码中有相当多的错误。没问题,但在代码开始正常工作之前,您可能需要修复所有这些问题。这个答案是为了给你一个跳板,让你在谷歌上搜索其中的一些错误,并围绕Update()方法及其在Unity中的工作方式进行思考。

首先,您需要确保RigidBody2d组件位于游戏对象上。这很容易做到,右键单击检查器并添加组件。Google:“如何将组件添加到Unity中的游戏对象”

接下来,您需要了解调用Update()的频率及其工作方式。剧透警报-它会以最快的速度调用您的计算机。这意味着用transform.Rotate每次调用改变旋转很可能会导致一个物体旋转得非常快。也许它的旋转速度足够快,每帧旋转超过360度,看起来就像是随机地“抽动”。你需要缩放你的旋转,所以谷歌“单位更新中的增量时间”。

最后,您将需要收集您的输入,尽管有许多方法可以剥离这只猫的皮肤,但您使用Input.GetKey()正确地完成了这项工作。也许最直接的方法是在一个名为GetAllInputs()的方法中收集输入,将该方法中的一些布尔值设置为类似于IsMovingRightIsJumping的值,然后在Update方法中对它们进行操作。这只是一种方法,从字面上看有几十种方法,还有许多方法可以改进它们。谷歌搜索"Unity输入系统“,"Unity 2D物理”和“有限状态机”(因为你最终会想要有“状态”,如蜷缩,跳跃,奔跑,挂在墙上等)。看起来你在写一个platformer,所以我也会看一些youtube上的教程,以及谷歌短语"Creating a Unity Platformer Tutorial“。

票数 0
EN

Stack Overflow用户

发布于 2021-11-24 00:26:50

假设它以你想要的方式工作,这里的代码使用rigidbody (确保Rigid Body附加到对象上),这段代码必须在固定更新中编写,因为基于RigidBody的计算必须在固定更新中完成:

代码语言:javascript
运行
AI代码解释
复制
        public class Fly : MonoBehaviour
        {
            public float moveSpeed;
            [SerializeField] private Rigidbody rb;

            void Start()
            {
                rb = GetComponent<Rigidbody>();

            }


            void FixedUpdate()
            {
              if (Input.GetKey(KeyCode.Space))
              {
                  //transform.Translate(new Vector3(0,0,moveSpeed) * 
                  //Time.deltaTime, Space.Self);
                  if (rb)
                  {
                      rb.MovePosition(new Vector3(0,0,moveSpeed) * 
                      Time.deltaTime);
                  }
                  
              }
              

              float rotatex = Input.GetAxis("Vertical");
              float rotatey = Input.GetAxis("Horizontal");
              
              // transform.Rotate(0, rotatey, 0, Space.World);
              // transform.Rotate(-rotatex * 0.5f, 0, 0);
              if (rb)
              {
                  rb.MoveRotation(Quaternion.Euler(rotatex , rotatey , 0));
              }

            }
        }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70084729

复制
相关文章
摄像机镜头选择
不同摄像机的图像传感器靶面大小不同,但常用传感器规格为4:3(H:V) 镜头成像尺寸需要大于等于摄像机成像尺寸,否则四周有黑边
治电小白菜
2022/07/08
8830
摄像机镜头选择
如何将IDEA上的项目上传到GitHub上?
最近,找到了一个去年用Springboot完成的一个web类博客项目,于是想到了上传到GitHub上开源分享。相信还有一部分刚入"IT"圈的编程小白(请忽略我也是一个菜鸟…),于是正好利用这个机会做一期记录。
大数据梦想家
2021/01/27
7K0
如何将IDEA上的项目上传到GitHub上?
将文件自动上传到FTP服务器
将文件代码另存为.bat文件,双击运行后会将E盘中的所有的txt文件上传到我们指定的服务器。
逍遥子大表哥
2021/12/17
3.6K0
如何将应用上传到TestFlight
将应用上传至TestFlight分为以下几个步骤 1.下载上传工具,mac直接可以下载Transporter(https://apps.apple.com/cn/app/transporter/id1
iOS程序应用
2023/03/31
2.1K0
如何将项目上传到码云gitee
1.安装git,默认安装路径在C盘,你也可以更改安装路径,然后默认一直next就行。
安德玛
2022/03/08
1.4K0
linux下自动备份脚本并上传到ftp服务器
#!/bin/bash #设置日志文件,前提建好了/backup/log目录 LogFile=/backup/log/`date +"%Y-%m"`.log #备份源目录 SourceDir=/cvs #备份目标 BakDir=/backup #保存20天过期自动删除 RetainDay=20 #备份的内容可以写进project.lst,如cvs目录下有a,b,c三个目录,project.lst填写多少就备份多少,下面是备份的 #具体脚本,其核心是tar打包,并把重要的内容记录到日志文件里 ProjectLst=/backup/project.lst ################################################## DATE=`date +"%Y-%m-%d"` echo "backup start at $(date +"%Y-%m-%d %H:%M:%S")" >$LogFile echo "--------------------------------------------------" >>$LogFile cd $BakDir PROJECTLIST=`cat $ProjectLst` for Project in $PROJECTLIST do  ProjectData=$SourceDir/$Project  DestDir=$BakDir/$Project  PackFile=$DATE.$Project.tgz  if [ -f $BakDir/$PackFile ]  then   echo "backup file have exist !" >>$LogFile  else   cp -RHpf $ProjectData $DestDir >/dev/null   tar -zcvf $PackFile $Project >/dev/null   echo "backup $Project done into $PackFile" >>$LogFile   rm -rf $Project  fi done echo "--------------------------------------------------" >>$LogFile echo "backup end at $(date +"%Y-%m-%d %H:%M:%S")" >>$LogFile echo " " >> $LogFile ################################################## #下面的内容就是把刚才备份的内容传到服务器上,前提是你有一个可以访问到底FTP服务器 #put backup to ftp server HOST=192.168.110.111 FTP_USERNAME=ftpuser FTP_PASSWORD=123456 cd  $BakDir echo "start open ftp serverat $(date +"%Y-%m-%d %H:%M:%S")" >> $LogFile echo "--------------------------------------------------" >>$LogFile /usr/bin/ftp -in <<EOF open $HOST user $FTP_USERNAME $FTP_PASSWORD put $DATE.$Project.tgz bye EOF echo "put ftp end at $(date +"%Y-%m-%d %H:%M:%S")" >>$LogFile #最后上传完毕后再查看本地备份大于20天的自动删除,这样就可以实现本地异地双备份 find $Bakdir -type f -mtime +$RetainDay -name "*.$Project.tgz" -exec rm {} \; >/dev/null exit 0 #最后我们还可用crontab做个周期性计划,比如每周一次全备份 #59 23 * *  6  /home/backup.sh
三杯水Plus
2018/11/14
2.6K0
【游戏开发实战】2D游戏摄像机镜头跟随,屏幕边缘限制镜头移动(使用Cinemachine组件)
嗨,大家好,我是新发。 有老铁留言问我能不能写一下2D镜头跟随以及人物移动到屏幕边缘限制镜头的文章,
全栈程序员站长
2022/09/01
2.1K0
工业镜头和民用镜头的区别在哪里?
光学镜头一般称为摄像镜头或摄影镜头,简称镜头,其功能就是光学成像。镜头是机器视觉系统中的重要组件,对成像质量有着关键性的作用,它对成像质量的几个最主要指标都有影响,包括:分辨率、对比度、景深及各种像差。镜头不仅种类繁多,而且质量差异也非常大,但一般用户在进行系统设计时往往对镜头的选择重视不够,导致不能得到理想的图像,甚至导致系统开发失败。
小白学视觉
2020/03/24
1.3K0
工业镜头和民用镜头的区别在哪里?
工业镜头和民用镜头的特点和区别
光学镜头一般称为摄像镜头或摄影镜头,简称镜头,其功能就是光学成像。镜头是机器视觉系统中的重要组件,对成像质量有着关键性的作用,它对成像质量的几个最主要指标都有影响,包括:分辨率、对比度、景深及各种像差。镜头不仅种类繁多,而且质量差异也非常大,但一般用户在进行系统设计时往往对镜头的选择重视不够,导致不能得到理想的图像,甚至导致系统开发失败。
小白学视觉
2022/01/18
5120
工业镜头和民用镜头的特点和区别
借助NVIDIA Jetson NANO算力,VEO让你看球赛头头是道
2015 年秋天的某一天,VEO的联合创始人 Keld 因为交通堵塞错过了他儿子的足球比赛。他开始想:“为什么不能记录下所有的足球比赛呢”。当然,职业俱乐部和精英级别的学院会记录他们的比赛,但是随着视频技术这些年来的飞速发展,为什么不能简单、经济且轻松地记录所有比赛——从冠军联赛到周日联赛?于是那天下午,Veo 的想法诞生了。
GPUS Lady
2021/09/22
1.8K0
【知识普及】摄像机常用专业术语(上)
答: 从光学原理来讲焦距就是从焦点到透镜中心的距离。即焦距长度。如"f=8-24mm,",就是指镜头的焦距长度为8-24mm。
233333
2020/10/10
1.4K0
利用人工智能提升足球直播效果
人工智能技术代表着未来无限的可能性,已经在很多领域带来巨大的冲击。在足球直播这一领域,版权方需要提供更多更优质的内容以应对日益增长的多元化需求,因此急需提高运营效率的新方式。
用户1324186
2018/10/25
3K2
利用人工智能提升足球直播效果
网络摄像机(IPC)介绍
网络摄像机是一种结合传统摄像机与网络技术所产生的新一代摄像机,它可以将视频影像通过网络传至地球另一端,且远端的浏览者不需用任何专业软件,只要标准的网络浏览器(如“Microsoft IE或Netscape)即可监视其视频影像。网络摄像机一般由镜头、图像传感器、声音传感器、信号处理器、A/D转换器、编码芯片、主控芯片、网络及控制接口等部分组成。
用户6280468
2023/09/21
2.4K0
网络摄像机(IPC)介绍
31. 镜头、曝光,以及对焦(上)
它能使得真实物体透过小孔在屏幕上成一个倒像。而且我们知道,理想中的小孔具有无限小的尺寸。
HawkWang
2020/04/17
9390
31. 镜头、曝光,以及对焦(上)
创建远程仓库,如何将本地项目上传到GitLab
最近抽时间搭建了一个自己的 Git 服务器(GitLab),准备把一些项目传上去。
德顺
2020/09/07
4.5K0
如何将VS 2015中的项目上传到github
最近开始慢慢接触github,现在希望将自己平时写的小程序,上传到github上,以便以后有个参考,在遇到同样问题的时候不至于想不起来怎么做而到处找别人的例子。
Masimaro
2018/08/31
2.4K0
如何将VS 2015中的项目上传到github
typora自动图片自动上传到图床
由于突然发现Typora0.9.84的更新中有一个Support upload images via PicGo or custom commands.
Dreamy.TZK
2020/04/09
1.1K0
人工智能赋能流媒体
前言 人工智能(AI)、深度学习和自然语言处理将成为新一代流媒体行业的关键技术。从生产到消费的各个阶段,它们都将产生非常重大的影响。毫无疑问,随着人工智能在许多不同行业的逐步深入,它也将被更广泛地应用于流媒体领域。 近年来,一些公司已经取得了重要的进展,包括Google云视频智能API,Conviva的视频智能架构,NVIDIA DLA和IBM Watson技术。所有这些技术都在不同程度上部署了AI,尤其是在云计算领域。另外,我们很快也会看到AI被应用于流媒体的其他方面。 人工智能可以用来取代很多人力资源,
用户1324186
2018/03/05
1.7K0
人工智能赋能流媒体
点击加载更多

相似问题

统一刚体有速度但没有运动

23

统一刚体FixedUpdate基本运动不起作用

10

用鼠标统一运动刚体的问题

11

刚体运动估计

20

无刚体运动

16
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档