簡體   English   中英

精靈未在unity2D C#中移動

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM