[英]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.