C# 为什么我按下LMB时球会落下?

C# 为什么我按下LMB时球会落下?,c#,unity3d,unity3d-editor,C#,Unity3d,Unity3d Editor,当我按下鼠标左键时,我试图让“第一人称控制器”爆炸(飞起来),但我的球掉了下来 这是针对Unity 4.5.5的(我的笔记本不运行Unity的5.x.x版本) 使用UnityEngine; 使用系统集合; 公共类eeeboi:单一行为{ 公共浮子速度=6.0F; 公共浮子跳跃速度=8.0F; 公共浮子重力=20.0F; 专用矢量3移动方向=矢量3.0; 公众浮标半径; 公众浮力; 空吹(){ Collider[]col=physical.overlapphere(transform.positi

当我按下鼠标左键时,我试图让“第一人称控制器”爆炸(飞起来),但我的球掉了下来

这是针对Unity 4.5.5的(我的笔记本不运行Unity的5.x.x版本)

使用UnityEngine;
使用系统集合;
公共类eeeboi:单一行为{
公共浮子速度=6.0F;
公共浮子跳跃速度=8.0F;
公共浮子重力=20.0F;
专用矢量3移动方向=矢量3.0;
公众浮标半径;
公众浮力;
空吹(){
Collider[]col=physical.overlapphere(transform.position,radius);
foreach(col中的碰撞器c){
如果(c.name!=“平面”){
c、 GetComponent().AddExplosionForce(力、变换、位置、半径);
}
}
}
无效更新(){
CharacterController=GetComponent();
if(controller.isground){
moveDirection=新矢量3(Input.GetAxis(“水平”)、0、Input.GetAxis(“垂直”);
moveDirection=transform.TransformDirection(moveDirection);
移动方向*=速度;
if(Input.GetButton(“跳转”))
移动方向。y=跳跃速度;
}
moveDirection.y-=重力*时间增量;
控制器移动(移动方向*时间增量);
if(Input.GetMouseButtonDown(0)){
打击();
}
}
}

我希望当我的球在它下面时,“第一人称控制器”会飞起来,但我的球会下落而不动

我相信你的
AddExplosionForce
方法需要第四个参数为非零,比如3.0F,如下所示:
AddExplosionForce(功率,爆炸位置,半径,3.0F)


另外,尝试使用
Debug.Log
进行调试。希望有帮助

此外,请确保重叠球体半径足够大,以便它接触到要向上推/向上飞的对象。它位于对象的中心(第二个参数是
transform.position
),因此对象始终处于爆炸中……除非半径为零,否则可能?lolI认为这个脚本将被附加到球上,我们想要推的物体位于离球一定距离的地方。这个问题真的不清楚。我同意这个剧本是要继续进行下去的。但是,我也认为这个球和问题中提到的“第一人称控制器”是一样的,因为我认为Asker使用这个术语与
CharacterController
互换,这是这个脚本的一个兄弟组件。哦,我明白了。那我也同意你的看法。让我们给问题的作者澄清一下脚本所附加的对象是什么,以及什么是
CharacterController
。你能提供屏幕截图来显示球上的组件以及“第一人称控制器”是什么吗?目前还不清楚这两个名称是否指单独的对象。
using UnityEngine;
using System.Collections;

public class eeeboi : MonoBehaviour {
    public float speed = 6.0F;
    public float jumpSpeed = 8.0F;
    public float gravity = 20.0F;
    private Vector3 moveDirection = Vector3.zero;
    public float radius;
    public float force;

void Blow () {
    Collider[] col = Physics.OverlapSphere (transform.position, radius);
    foreach (Collider c in col) {
        if (c.name != "Plane"){
            c.GetComponent<Rigidbody>().AddExplosionForce (force, transform.position, radius);
        }
    }
}

void Update() {
    CharacterController controller = GetComponent<CharacterController> ();

    if (controller.isGrounded) {
        moveDirection = new Vector3 (Input.GetAxis ("Horizontal"), 0, Input.GetAxis ("Vertical"));
        moveDirection = transform.TransformDirection (moveDirection);
        moveDirection *= speed;

        if (Input.GetButton ("Jump"))
            moveDirection.y = jumpSpeed;
    }

    moveDirection.y -= gravity * Time.deltaTime;
    controller.Move (moveDirection * Time.deltaTime);

    if (Input.GetMouseButtonDown (0)) {
        Blow ();
        }
    }
}