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