簡體   English   中英

統一移動 object -

[英]move object in unity -

我是 Yonti 的新手,我正在嘗試構建一個簡單的迷宮游戲,並且我正在嘗試讓玩家的 object 移動,但我無法做到幾個小時。

這是我寫下的代碼:

using UnityEngine;
using System.Collections;
using System.Collections.Generic;

public class PlayerMover : MonoBehaviour
{

    public float speed;

    public Rigidbody rb;

    void Start()
    {
        rb = GetComponent<Rigidbody>();
    }

    void FixedUpdate()
    {
        float moveHorizontal = Input.GetAxis("Horizontal");
        float moveVertical = Input.GetAxis("Vertical");

        Vector3 movement = new Vector3(moveHorizontal, 0.0f, moveVertical);

        rb.AddForce(movement * speed);
    }
}

這是播放器 object:

在此處輸入圖像描述

我不明白我哪里有問題。 我將腳本添加到播放器 object 並且沒有收到錯誤消息。 就是不動,不明白為什么

嘗試關閉剛體上的isKinematic IsKinematic 用於動畫/腳本移動與rb.position 作為回報,這將禁用剛體上的所有力,導致您的rb.AddForce無效。

如果啟用 isKinematic,力、碰撞或關節將不再影響剛體。 這取自文檔

我也會對Fixed Update保持謹慎, 因為它可能會使用 KeyDown 和 KeyUp 丟失 Input 信號; 但你使用它的方式應該沒問題。

剛體可能與地形相互作用; 而不是使用“剛體”,你應該使用 CharacterController https://docs.unity3d.com/ScriptReference/CharacterController.html

當您使用公共變量時,您總是需要以某種方式分配它們,因為 Unity 將首先嘗試從Inspector進行搜索。 您可以通過將剛體設置為private來簡單地解決您的問題,然后像您所做的那樣在Start()中分配它。

如果要將剛體設置為public ,則必須通過在腳本檢查器內拖動剛體組件來在檢查器中分配它

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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