簡體   English   中英

團結,通過摩擦+旋轉來移動物體

[英]Unity, Moving object by friction + rotation

我拼命地尋找到解決該問題的方法,但還沒有找到任何可能的辦法,也許您可​​以幫幫我:我正在做一個簡單的測試,其中一種圓柱體可以自行旋轉並通過摩擦在平坦的平台上移動。 我有剛體,已經附加了網格對撞機和控制旋轉的腳本。 它可以快慢移動,取決於其轉速。 腳本如下:

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

public class PlayerController : MonoBehaviour {

public float rollingSpeed;
public float gravity;

// Update is called once per frame
void FixedUpdate()
{
    transform.Rotate(rollingSpeed, 0.0f, 0.0f);
    GetComponent<Rigidbody>().AddForce(0.0f, -gravity, 0.0f);
}
}

問題是當我運行“播放”模式時,此圓柱體本身正在旋轉,但保持在相同位置! (實際上,它來回移動的幅度很小),我真的不知道是什么原因,我試圖增加摩擦參數,添加物理材料,甚至向下施加第二個力(如重力),但沒有用。 有人可以為此提供解決方案嗎? 非常感謝你們!

在此處輸入圖片說明

Rotate只是在沒有任何力的情況下變換橢圓坐標,請使用AddTorque進行物理運動。

例如,

GetComponent<Rigidbody>().AddTorque(new Vector3(1, 0, 0) * rollingSpeed * Time.deltatime);

了解更多, Unity Doc

添加有關Unity上基本物理的技巧。

請記住,在使用Transform ,這意味着沒有物理意義。 您只是在更改其位置和旋轉。

要從事物理學工作,始終是Rigidbody

暫無
暫無

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

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