[英]Sprite not moving in unity2D C#
我正在创建一个统一的2D游戏,在此游戏中,需要一个名为Moving_Truck的GameObject才能从左侧顺利移入场景。 因为稍后将需要这样做,所以我尝试使该方法从另一个对象的另一个代码运行,该对象称为场景控制,而脚本称为打开场景。
问题是当我按下空间按钮时,Moving_Truck游戏对象不会移动。 我对C#相当陌生,并尝试了一些解决方案,例如Vector2.MoveTowards和Vector2.Lerp。 我也多次修改我的代码,以使其正常工作。 这是代码的最新版本:
角色库
using UnityEngine;
using System.Collections;
public class CharacterBase : MonoBehaviour {
private float SprSize, HalfSprSize, Distance;
public int run = 1;
public void CharMove(int Dir, string Char, float speed, string BackgroundName)
{
var CharOBJ = GameObject.Find(Char);
var BGOBJ = GameObject.Find(BackgroundName);
SprSize = CharOBJ.GetComponent<Renderer>().bounds.size.x;
HalfSprSize = SprSize / 2;
Vector2 EndPos = new Vector2(BGOBJ.transform.position.x, CharOBJ.transform.position.y);
Debug.Log(EndPos);
CharOBJ.transform.position = Vector2.MoveTowards(CharOBJ.transform.position, EndPos, speed * Time.deltaTime);
}
}
OpeningScene
using UnityEngine;
using System.Collections;
public class OpeningScene : CharacterBase {
int Advance = 0, Run = 0;
void Start ()
{
}
void FixedUpdate()
{
if (Input.GetKeyUp("space"))
{
Run = 1;
Debug.Log("Space Pressed");
}
if (Run == 1)
{
Run = 0;
Advance += 1;
switch (Advance)
{
case 1:
CharMove(-1, "Moving_Truck", 0.05f, "House_Front");
break;
case 2:
CharMove(1, "Moving_Truck", 0.05f, "House_Front");
break;
}
}
}
}
这真让我发疯,我已经尝试将其修复大约一个小时或两个小时,有人可以帮忙吗?对于较长的问题也很抱歉,如果需要更多信息,请发表评论。 也请暂时忽略Dir Argument。 谢谢。
释放空格键时,Unity的Input.GetKeyUp仅在框架上返回true。 因此,按空格键仅将CharMove调用一帧,然后仅移动0.05f * timeDelta,这可能会小于一个像素。
同样,这是无关的,但是您不想每次移动角色时都调用GameObject.Find(string)。 而是在Start()方法中调用一次,然后将结果存储到字段中。
你有没有尝试过
GetComponent<Rigidbody2D> ().velocity = new Vector2 (moveSpeed, GetComponent<Rigidbody2D> ().velocity.y);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.