Unity3D-rigidBody.velocity

还有半小时就下班了,写一下今天遇到的问题、处理方法以及一些自己的理解。理解的不一定对,还希望大家指正。

今天我做的效果是,hero的移动。

以前做过用的是transform.Translate(Vector3.forward*Time.deltaTime*Speed);

但是这样做有些bug就是移动不持续,当然你也可以加上时间延时函数,一点点的模拟动画效果,太麻烦了(我就想这样干)。

后来,老师指导我加力,rigidbody.AddForce(new Vector3(1,0,0));我这样想太单纯了,这样做的效果就是,hero倒了。

没办法,后来拿到了一段代码

rigidbody.velocity = transform.forward * heroXSpeed*1.1f;

walkDistance -= heroXSpeed * Time.fixedDeltaTime*1.1f;

核心是第一句rigidbody.velocity群中有说是计算刚体速度向量(好官方),有说给物体一个初速度。反正就是这个意思。

不过这段话放在Update()函数里:

	void Update ()
	{
		animation.Play ("walk");
		rigidbody.velocity = transform.forward * heroXSpeed * 1.1f;
	}

hero移动也有动画

但是如果我写一个触发

	void Update ()
	{
		animation.Play ("walk");
		//rigidbody.velocity = transform.forward * heroXSpeed * 1.1f;
		if (Input.GetKey (KeyCode.D)) {
			rigidbody.velocity = transform.forward * heroXSpeed * 1.1f;
			//rigidbody.velocity =new Vector3(1,0,0);
		}
	}

这样,当我按下D键,hero执行移动就没有效果。

我又修改了一下代码

	void Update ()
	{
		animation.Play ("walk");
		//rigidbody.velocity = transform.forward * heroXSpeed * 1.1f;
		if (Input.GetKey (KeyCode.D)) {
			rigidbody.velocity += transform.forward * heroXSpeed * 1.1f;
			//rigidbody.velocity =new Vector3(1,0,0);
		}
	}

加了一个+号,它就可以了。这样,我就推论出来,Update()是一帧一帧的渲染,可以实时显示效果,但是加入判断之后就需要等待响应,无法做到实时的效果。

还有一种写法是

	// Update is called once per frame
	void Update ()
	{
		animation.Play ("walk");
		//rigidbody.velocity = transform.forward * heroXSpeed * 1.1f;
		if (Input.GetKey (KeyCode.D)) {
			//rigidbody.velocity += transform.forward * heroXSpeed * 1.1f;
			rigidbody.velocity =new Vector3(1,0,0);
		}
	}

这样也可以移动,但是移动较快,和transform.Translate()效果差不多了。

注:heroXSpeed我取的是0.1f大家可以随意

收拾收拾要下班了,啦啦啦。希望大家多多指教,毕竟我是新手,哈哈。

Unity3D-rigidBody.velocity

时间: 2024-10-10 04:16:22

Unity3D-rigidBody.velocity的相关文章

unity3d 赛车游戏——复位点检测

一直没有时间写博客 昨天我的CarWaypoints插件也告一段落了 今年没回家,过年就我一个人 挺无聊的,那就休息一天写几篇博客吧 我的代码可能很少,但是思路很重要 希望不懂的朋友别只copy代码 赛车游戏的话赛车难免会冲出跑道.掉入水坑.卡在障碍物上....等情况 那么问题来了,遇到这些情况怎么办呢? 玩家玩得好好的,难道就因为遇到这些情况要退出游戏重新进入吗? 那当然是不现实的,要是我的话果断卸载游戏 还要骂一句做游戏的人是脑残啊 我想你不希望玩家骂你是脑残吧,哈哈哈 新技能,赶快GET起

(转)Unity3D中移动物体位置的几种方法

1. 简介 在unity3d中,有多种方式可以改变物体的坐标,实现移动的目的,其本质是每帧修改物体的position. 2. 通过Transform组件移动物体 Transform 组件用于描述物体在空间中的状态,它包括 位置(position), 旋转(rotation)和 缩放(scale). 其实所有的移动都会导致position的改变,这里所说的通过Transform组件来移动物体,指的是直接操作Transform来控制物体的位置(position). 2.1 Transform.Tra

Unity3D 中 Generic 动画导入设置和 Root Motion 之间的关系

2条评论 Unity3D 的 Mecanim 动画系统可以直接复用 3DS MAX 中制作的动画文件中的位移,这个就是通过 applyRootMotion 来达成的,我们只需要在使用 Animator 控制动画播放的同时,设置 Animator 的 applyRootMotion 字段为 True 就 OK 了. 那么怎么来利用这个特性达成我们想要的一些效果呢?这个 applyRootMotion 到底指的是啥呢? ApplyRootMotion,从字面上理解来看,是『应用根节点的运动』,听起来

[Unity3D入门]入门级游戏项目"坦克狙击手"更新

[Unity3D入门]入门级游戏项目"坦克狙击手"更新 在上一篇中我分享了一个尚未完全写好的入门级unity3d项目"坦克狙击手". 本文介绍最新版的"坦克狙击手"相关情况. 需要源代码和发布的Windows版.网页版程序的同学麻烦点个赞留下你的邮箱~ 关于调节粒子系统参数的经验 如你所见,我对导弹尾焰的粒子效果进行了调节.这里学到的一个经验是,分析然后模仿现实生活中的物理化学现象,才能做出逼真的效果.一个粒子就是火焰中的一个点.我们都知道蜡烛的

[Unity3D入门]分享一个自制的入门级游戏项目"坦克狙击手"

[Unity3D入门]分享一个自制的入门级游戏项目"坦克狙击手" 我在学Unity3D,TankSniper(坦克狙击手)这个项目是用来练手的.游戏玩法来自这里(http://www.4399.com/flash/127672_3.htm),虽然抄袭了人家的创意,不过我只用来练习(目前还很不成熟,离人家的境界相差很大),坦克.导弹.建筑模型来自网络,应该不会有版权问题吧. 由于模型和代码总共10M以上了,需要源代码和发布的Windows版.网页版程序的同学麻烦点个赞并留下你的邮箱~ 到

Unity3D碰撞后去掉相互之间的反弹力

最近做一个小游戏的时候发现,小模型碰撞到墙壁之后会有一个小小的反弹力导致模型有一个微弱的回弹位移,这样给人一种不好的感觉...... 研究了一下,除了 rigidbody Freeze Rotation之外 在FixedUpdate(注意这里是物理特性,应在这里写而不是Update函数内)里面写一句 rigidbody.velocity = new Vector3(0, 0, 0); Unity3D碰撞后去掉相互之间的反弹力,布布扣,bubuko.com

【Unity3D】利用物体碰撞检测、键盘输入处理完成平衡球游戏

物体碰撞检测是游戏编程里面非常常用的功能,一旦碰到就怎么怎么样,比如掉血等.Unity3D直接就提供了物体碰撞检测的接口,实现起来很方便.借此功能,完成了一个平衡球游戏,同时说明Unity3D的物体碰撞检测.键盘输入处理的检测的使用.游戏如下图所示: 一.场景布置 1.UI方面布置如下所示,基本就是<[Unity3D]对话框.隐藏与显示.拖拽>(点击打开链接)的内容,不赘述了.StartModal和GameoverModal本质是Image,将他们重叠在一起,一会儿将用脚本隐藏Gameover

Unity3D 物体移动方式

1. 简介 在Unity3D中,有多种方式可以改变物体的坐标,实现移动的目的,其本质是每帧修改物体的position. 2. 通过Transform组件移动物体 Transform 组件用于描述物体在空间中的状态,它包括 位置(position), 旋转(rotation)和 缩放(scale). 其实所有的移动都会导致position的改变,这里所说的通过Transform组件来移动物体,指的是直接操作Transform来控制物体的位置(position). 2.1 Transform.Tra

Unity3D 角色(物体) 移动方法 合集

1. 简介 在Unity3D中,有多种方式可以改变物体的坐标,实现移动的目的,其本质是每帧修改物体的position. 2. 通过Transform组件移动物体 Transform 组件用于描述物体在空间中的状态,它包括 位置(position), 旋转(rotation)和 缩放(scale). 其实所有的移动都会导致position的改变,这里所说的通过Transform组件来移动物体,指的是直接操作Transform来控制物体的位置(position). 2.1 Transform.Tra

unity3d 游戏人工智能开发之状态机(C#模板与示例)

Finite State Machine 状态机 This is a Deterministic Finite State Machine framework based on chapter 3.1 of Game Programming Gems 1 by Eric Dybsend. Therea are two classes and two enums. Include them in your project and follow the explanations to get the