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