Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#玩家统一移动_C#_Unity3d_Game Engine_Unityscript - Fatal编程技术网

C#玩家统一移动

C#玩家统一移动,c#,unity3d,game-engine,unityscript,C#,Unity3d,Game Engine,Unityscript,代码在移动带有左右箭头的刚体时效果很好,但我不明白使用maxVelocity和absVelX的意义,我不知道它们在代码中的作用。。当我删除这两个功能时,效果非常好,但在高级游戏级别中,我似乎需要这两个功能。这是琳达的课程,名为“杰西·弗里曼的统一2d基本训练” 使用UnityEngine; 使用系统集合; 公共类玩家:单一行为{ 公共浮子速度=10f; 公共向量2 maxVelocity=新向量2(3,5); 公众利益; 公共浮子喷射速度=15f; //每帧调用一次更新 无效更新(){ //强制

代码在移动带有左右箭头的刚体时效果很好,但我不明白使用maxVelocity和absVelX的意义,我不知道它们在代码中的作用。。当我删除这两个功能时,效果非常好,但在高级游戏级别中,我似乎需要这两个功能。这是琳达的课程,名为“杰西·弗里曼的统一2d基本训练”

使用UnityEngine;
使用系统集合;
公共类玩家:单一行为{
公共浮子速度=10f;
公共向量2 maxVelocity=新向量2(3,5);
公众利益;
公共浮子喷射速度=15f;
//每帧调用一次更新
无效更新(){
//强制重置每个帧
var-forceX=0f;
var-forceY=0f;
var absVelX=Mathf.Abs(刚体2d.velocity.x);
var Absvly=Mathf.Abs(刚体2d.velocity.y);
if(Input.GetKey(“right”)){
if(absVelX
从提供的代码来看,这些变量似乎是速度的定义极限,分配给
rigidbody2D.velocity.x
(调用
abs
是比较绝对矢量大小,而不仅仅是坐标)


现在还不清楚是否设置了
rigidbody2D.velocity.x
,但代码假定它可能比
3
大,程序会在该最大值上中断

那么,代码是否在每帧之后将rigidbody2D.velocity.x分配到absvelX中?因此,在任何速度应用之前,它的标量现在被设置为“0”?
Abs
意味着删除符号。所以如果你的
刚体2d.velocity.x
等于-0.34,它就变成了0.34。我知道,我的意思是,absvelX总是==0吗,在移动玩家之前,没有速度值!如果
velocity.x
值为0,abs也将为,是的。
using UnityEngine;

using System.Collections;

public class Player : MonoBehaviour {

public float speed=10f;
public Vector2 maxVelocity=new Vector2(3,5);
public bool standing;
public float jetSpeed=15f;

// Update is called once per frame
void Update () {
            //Force resetted each frame
            var forceX = 0f;
            var forceY = 0f;
            var absVelX = Mathf.Abs (rigidbody2D.velocity.x);
            var absVelY = Mathf.Abs (rigidbody2D.velocity.y);

            if (Input.GetKey ("right")) {
                    if (absVelX < maxVelocity.x)
                            forceX = speed;

            transform.localScale=new Vector3(1,1,1);//Sprite orignal pose

            } else if (Input.GetKey ("left")) {
                    if (absVelX < maxVelocity.x)
                            forceX = -speed;

            transform.localScale=new Vector3(-1,1,1);//Sprite reversal pose

            }
    rigidbody2D.AddForce(new Vector2(forceX,forceY));
}
}