第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

我不知道為什么,但我的附加力不起作用,我有一個(gè)igidbody2d

我不知道為什么,但我的附加力不起作用,我有一個(gè)igidbody2d

C#
holdtom 2023-09-16 17:24:18
我不知道為什么,但我的剛體上的 .addforce 不起作用。我嘗試按照官方的 unity addforce 教程進(jìn)行操作。using System.Collections;using System.Collections.Generic;using UnityEngine;public class ArrowController : MonoBehaviour{    public Rigidbody2D rb;    public float speed = 5.0f;    public Vector2 pos;    void Start()    {        rb = GetComponent<Rigidbody2D>();    }    // Update is called once per frame    void Update()    {        faceMouse();        testForClick();    }    void faceMouse()    {        Vector3 mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);        Vector3 differance = GameObject.Find("gunArm").transform.position - mousePos;        float gunAngle = Mathf.Atan2(differance.y, differance.x) * Mathf.Rad2Deg;        GameObject.Find("gunArm").transform.rotation = Quaternion.Euler(0, 0, gunAngle);    }    void testForClick()    {        if (Input.GetMouseButtonDown(0))        {            print("click");            rb.AddForce(transform.forward);        }    }}我希望箭頭在向前方向上添加力,但它只是打印出“單擊”(我添加的消息是為了確保鼠標(biāo)單擊正常工作)。
查看完整描述

3 回答

?
白衣非少年

TA貢獻(xiàn)1155條經(jīng)驗(yàn) 獲得超0個(gè)贊

我不知道為什么,但我創(chuàng)建了一個(gè)測(cè)試腳本:


using System.Collections;

using System.Collections.Generic;

using UnityEngine;


public class Test : MonoBehaviour

{

    public Rigidbody2D rb;

    public float speed = 20.0f;


    // Start is called before the first frame update

    void Start()

    {

        rb = GetComponent<Rigidbody2D>();

    }


    // Update is called once per frame

    void Update()

    {

        if (Input.GetMouseButtonDown(0))

        {

            print("click");


            rb.AddForce(transform.right * speed, ForceMode2D.Impulse);

        }


        rotate();

    }


    private void rotate()

    {


    }

}

我還將我的舊腳本編輯為:


using System.Collections;

using System.Collections.Generic;

using UnityEngine;


public class ArrowController : MonoBehaviour

{

    public Rigidbody2D rb;

    public float speed = 50.0f;

    public Vector2 pos;


    private void Start()

    {

        rb = GetComponent<Rigidbody2D>();

    }


    private void Update()

    {

        faceMouse();

        testForClick();

    }


    void FixedUpdate()

    {

        if (doForce == true)

        {

            doForce = false;

            rb.AddForce(transform.forward * speed, ForceMode2D.Impulse);

        }

    }


    private bool doForce;


    private GameObject gunArm;

    private Camera cam;


    private void faceMouse()

    {

        // try to reuse the reference

        if (!cam) cam = Camera.main;


        var mousePos = cam.ScreenToWorldPoint(Input.mousePosition);


        // try to re-use the reference

        if (!gunArm) gunArm = GameObject.Find("gunArm");


        var difference = rb.transform.position - mousePos;

        var gunAngle = Mathf.Atan2(difference.y, difference.x) * Mathf.Rad2Deg;

        rb.transform.rotation = Quaternion.Euler(0, 0, gunAngle);

    }


    void testForClick()

    {

        if (Input.GetMouseButtonDown(0))

        {

            print("click");


            // only set the flag

            doForce = true;

        }

    }


    void place()

    {


    }

}

并且測(cè)試本身無(wú)需旋轉(zhuǎn),并且在主腳本上僅旋轉(zhuǎn)有效,因此我嘗試同時(shí)激活兩個(gè)腳本并且它開(kāi)始工作,感謝有關(guān)此問(wèn)題的所有幫助。


查看完整回答
反對(duì) 回復(fù) 2023-09-16
?
MMMHUHU

TA貢獻(xiàn)1834條經(jīng)驗(yàn) 獲得超8個(gè)贊

盡管事實(shí)上這isn't working是一個(gè)相當(dāng)薄弱的描述:

首先,您應(yīng)該在 中執(zhí)行此操作FixedUpdate,但在 中獲取輸入Update。

其次減少Find調(diào)用Update..效率非常低。如果可能的話,最好通過(guò)檢查器引用它們。否則,也許Start......我在這里展示的方式是延遲初始化的最后手段,假設(shè)您的腳本可能稍后在運(yùn)行時(shí)生成

,您可能想要傳遞ForceMode.ImpulseAddForce,因?yàn)槟惶砑右淮瘟?,而不是連續(xù)添加力。

public class ArrowController : MonoBehaviour

{

? ? public Rigidbody2D rb;

? ? public float speed = 5.0f;

? ? public Vector2 pos;


? ? // store and re-use references!

? ? // would be better to already reference them via drag&drop

? ? // in the Inspector

? ? [SerializeField] private GameObject gunArm;

? ? [SerializeField] private Camera cam;


? ? private void Start()

? ? {

? ? ? ? rb = GetComponent<Rigidbody2D>();

? ? }


? ? private void Update()

? ? {

? ? ? ? testForClick();

? ? }


? ? private void FixedUpdate()

? ? {

? ? ? ? // also do this here

? ? ? ? faceMouse();


? ? ? ? if (doForce)

? ? ? ? {

? ? ? ? ? ? doForce = false;

? ? ? ? ? ? rb.AddForce(transform.forward, ForceMode.Impulse);

? ? ? ? }

? ? }


? ? private bool doForce;




? ? private void faceMouse()

? ? {

? ? ? ? // try to reuse the reference

? ? ? ? if(!cam) cam = Camera.main;


? ? ? ? var mousePos = cam.ScreenToWorldPoint(Input.mousePosition);


? ? ? ? // try to re-use the reference

? ? ? ? if (!gunArm) gunArm = GameObject.Find("gunArm");


? ? ? ? var difference = gunArm.transform.position - mousePos;

? ? ? ? var gunAngle = Mathf.Atan2(difference.y, difference.x) * Mathf.Rad2Deg;


? ? ? ? gunArm.rotation = Quaternion.Euler(0, 0, gunAngle);

? ? }


? ? private void testForClick()

? ? {

? ? ? ? if (Input.GetMouseButtonDown(0))

? ? ? ? {

? ? ? ? ? ? print("click");


? ? ? ? ? ? // only set the flag

? ? ? ? ? ? doForce = true;

? ? ? ? }

? ? }

}


查看完整回答
反對(duì) 回復(fù) 2023-09-16
?
月關(guān)寶盒

TA貢獻(xiàn)1772條經(jīng)驗(yàn) 獲得超5個(gè)贊

你的代碼不做任何事情的原因不是因?yàn)樗黄鹱饔茫且驗(yàn)閠ransform.forward是一個(gè)大小為1的向量。添加大小為1的力對(duì)大多數(shù)物體不會(huì)有太大作用,并且摩擦力可能會(huì)減慢再次放下物體。


嘗試添加更高強(qiáng)度的力和 ForceMode.Impulse:


float strength = 50f;

rb.AddForce(transform.forward * strength, ForceMode.Impulse);

更新:

看起來(lái)您希望槍面向您的鼠標(biāo)位置,這可能就是您的問(wèn)題所在:讓我們嘗試使用 Quaternion.LookRotation 來(lái)使其工作,而不是手動(dòng)進(jìn)行數(shù)學(xué)計(jì)算。


或許:


GameObject gunArm;


void Awake()

{

    gunArm = GameObject.Find("gunArm");

}


void faceMouse()

{

    Vector3 difference = mousePos - gunArm.transform.position;

    difference.z = 0;

    gunArm.transform.rotation = Quaternion.LookRotation(difference);

}


查看完整回答
反對(duì) 回復(fù) 2023-09-16
  • 3 回答
  • 0 關(guān)注
  • 252 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)