关于Unity3d 使用rigidbody.velocity代替Transform.Translate()来使物体向前移动
来源:互联网 发布:车削中心的编程视频 编辑:程序博客网 时间:2024/06/05 18:26
个人接触Unity3d已经一年多的时间了,这是第一次有勇气在网上发表自己的心得,如有不敬或不合理的地方多多包含。
以下是自己的一个发现,如有不合理的地方请·大家多多指出:
在Unity里物体的移动有Transform.Translate()和rigidbody.velocity这两个方法(当然可能还有其他),Transform.Translate()是坐标的改变,rigidbody.velocity是在一定的方向(这里的方向是指世界坐标的方向)上以一定速度移动,对于方向的变化相对于rigidbody.velocity来说比较灵活,但因为是坐标的变化,有时候会是物体自身的物理效果不起作用,而rigidbody.velocity移动的方向真是针对世界坐标的方向而言,那么如何用rigidbody.velocity代替Transform.Translate()来使物体向前移动呢?
我是怎么想的,坐标也可以用向量来表示,rigidbody.velocity的方向也可以用向量表示,那么首先必须要能够获取物体自身指向前方的向量。
假设有三个点,分别为原点,物体自身坐标点LocalPos,始终在物体前方一定距离的点LocalForward。那么物体向前移动的方向就可以用LocalForward - LocalPos来表示。
废话不多说,代码如下:
using UnityEngine;
using System.Collections;
public class RigidSpeedVec : MonoBehaviour {
public float speed = 2;/*速度*/
// Use this for initialization
void Start () {
this.gameObject.AddComponent<Rigidbody>();/*添加Rigidbody组件*/
rigidbody.useGravity = false;
}
// Update is called once per frame
void Update () {
}
void FixedUpdate() {
Vector3 LocalPos = transform.position;/*物体所处的世界坐标向量*/
Vector3 LocalForward = transform.TransformPoint(Vector3.forward * speed);/*物体前方距离为speed的位置的世界坐标向量*/
Vector3 VecSpeed = LocalForward - LocalPos;/*物体自身Vector3.forward * speed的世界坐标向量*/
rigidbody.velocity = new Vector3 (VecSpeed.x,VecSpeed.y,VecSpeed.z);
}
}
- 关于Unity3d 使用rigidbody.velocity代替Transform.Translate()来使物体向前移动
- transform.Translate vs rigidbody.MovePosition?
- Unity3D-rigidBody.velocity
- Unity3D-rigidBody.velocity
- Unity3D-rigidBody.velocity
- 面向组件编程之Unity 7.怎样脚本控制物体旋转和移动 关键字:画圆&&Translate/transform.Translate,transform.Rotate
- Translate(用于移动物体)
- Unity3d 控制物体transform移动的几种方法
- Unity3d 控制物体transform移动的几种方法
- Unity3d 控制物体transform移动的几种方法
- rigidbody.velocity 控制角色的移动
- Unity3D的Rigidbody类中useGravity、isKinematic和velocity的使用注解
- Unity3d中使用鼠标拖动物体移动
- unity3D 使用rigidbody.AddForce(movement)
- unity3d 中 transform.position 与Rigidbody.position的同步问题
- unity3d物体移动
- Unity3D控制物体移动
- Unity3D中Rigidbody.velocity和Addforce的区别
- 注册JDBC驱动的三种方式
- Python获取CPU使用率、内存使用率、网络使用状态
- 无法安装net framework 3.5 的解决方法
- 17个新手常见Python运行时错误
- Binary Search Tree Iterator
- 关于Unity3d 使用rigidbody.velocity代替Transform.Translate()来使物体向前移动
- 《数据结构与算法分析》伸展树(自底向上)详解
- 刨根问底(二):从INode客户端看如何培养兴趣 (续)
- 聚类之详解FCM算法原理及应用
- 图结构练习——判断给定图是否存在合法拓扑序列
- Examining the Rooms - HDU 3625 第一类斯特林数
- android invalidate()和postInvalidate()的区别及使用
- HDU 小希的迷宫 (并查集)
- 实现ViewPager的回弹效果