Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unity3d 如何像踢一样增加力量_Unity3d - Fatal编程技术网

Unity3d 如何像踢一样增加力量

Unity3d 如何像踢一样增加力量,unity3d,Unity3d,问题很简单,但我对团结是新手 我想在单击对象时添加一个力。像踢一样 这是我的代码: using System.Collections; using System.Collections.Generic; using UnityEngine; public class box : MonoBehaviour { Rigidbody2D rb; void Start() { rb = GetComponent<Rigidbody2D>(

问题很简单,但我对团结是新手

我想在单击对象时添加一个力。像踢一样

这是我的代码:

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

public class box : MonoBehaviour
{
    Rigidbody2D rb;    

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


    void Update()
    {
        if(Input.GetMouseButtonDown(0))
        {

            rb.AddForce(Vector2.up * 17f, ForceMode2D.Impulse);

        }

    }


}
使用系统集合;
使用System.Collections.Generic;
使用UnityEngine;
公共类框:单一行为
{
刚体2d rb;
void Start()
{
rb=GetComponent();
}
无效更新()
{
if(Input.GetMouseButtonDown(0))
{
rb.附加力(矢量2.up*17f,力模式2D.脉冲);
}
}
}

但是它不起作用,因为它只是添加了一个通用的力。

这个问题不清楚,你需要提供更多的信息,但是如果你想实现一个类似“踢”的力(我想类似于足球),那么你应该计算你踢球的方向

我建议这样做-

rb.AddForce(_kickDirection * _kickForce, ForceMode2D.Impulse)

kickDirection是您希望踢向的方向。

您的代码工作正常。只需确保您的长方体和Rigidbody2D组件已连接到游戏对象,如下所示:

它不是在单击对象时,而是在根据代码单击的任何位置。 如果这不是你想要的,你需要更好地解释你的问题

编辑:

要提供“踢力”,你需要知道点击的位置。找到一些代码:

public class click : MonoBehaviour {
    void Update() {
        if (Input.GetMouseButtonDown(0)) {
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            RaycastHit hit;
            Debug.DrawRay(ray.origin, ray.direction * 20, Color.white);
            if (Physics.Raycast(ray, out hit)){
                if (hit.collider != null) {
                    Debug.Log("hit!");
                }
                else {
                    Debug.Log("no hit");
                }
            }
        }
    }
}
您需要确保目标具有碰撞器组件。使用
hit.point
可以获得位置。检查一下


获得命中位置后,可以定义要在哪个方向上应用力。对于踢力示例,可以是反方向,与从方框中心到命中点的反方向相反:
Vector3 forceDir=boxTransform.position-hit.point

是的,这就像足球一样。我怎样才能知道方向?谢谢:)方向是向上的,不需要计算。编辑没有按我想要的那样工作。我的代码只是在上面添加了一个通用的强制。相反,我需要在触摸/点击方向上施加一个力。就像一个简单的踢腿。因此,如果我触摸左边的盒子,那么盒子必须进入右边。这很简单。我会编辑我的答案以防有用