unity控制器随人物跳动

给unity人物模型添加了碰撞组件和胶囊碰撞器,怎样添加向上的力使胶囊随人物跳动,到底哪出错了,一点反应都没有


```c#
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ColliderFollowJump : MonoBehaviour
{
    public float jumpForce = 5f; // 跳跃力大小
    private bool isJumping = false;
    private Rigidbody rb;

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

    private void Update()
    {
        if (Input.GetKeyDown(KeyCode.G) && !isJumping)
        {
            Jump();
        }
    }

    private void Jump()
    {
        rb.AddForce(Vector3.up * jumpForce, ForceMode.Impulse);
        isJumping = true;
    }

    private void OnCollisionEnter(Collision collision)
    {
        if (collision.gameObject.CompareTag("Ground"))
        {
            isJumping = false;
        }
    }
}


```

  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7462755
  • 这篇博客也不错, 你可以看下[Unity动画]给人物模型添加简单的动画
  • 除此之外, 这篇博客: 【Unity小球酷跑编写记录】中的 六、游戏效果 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 您还可以看一下 张增会老师的Unity轻松制作塔防游戏课程中的 不同敌人分拨创建小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    对于这个问题,你可以尝试以下步骤解决:

    1. 确保你的控制器和人物模型在同一个父物体下,否则控制器无法跟随人物模型一起跳动。

    2. 添加一个Rigidbody组件到你的人物模型上,然后在脚本中使用AddForce方法给它一个向上的力。

    public class JumpController : MonoBehaviour
    {
        public float jumpForce = 10f;
        private Rigidbody rb;
    
        private void Start()
        {
            rb = GetComponent<Rigidbody>();
        }
    
        private void Update()
        {
            if (Input.GetKeyDown(KeyCode.Space))
            {
                rb.AddForce(Vector3.up * jumpForce, ForceMode.Impulse);
            }
        }
    }
    
    1. 把同样的代码添加到你的控制器脚本中。
    public class JumpController : MonoBehaviour
    {
        public float jumpForce = 10f;
        private Rigidbody rb;
    
        private void Start()
        {
            rb = GetComponent<Rigidbody>();
        }
    
        private void Update()
        {
            if (Input.GetKeyDown(KeyCode.Space))
            {
                rb.AddForce(Vector3.up * jumpForce, ForceMode.Impulse);
            }
        }
    }
    
    1. 如果你已经按照以上步骤修改了你的代码,但它仍然无法正常工作,请检查你在Unity编辑器中的控制器对象,确保它的Scale为(1,1,1),否则可能会导致它产生奇怪的行为。

    如果你还是不能解决这个问题,那么你可以在Unity的论坛上寻求帮助,或者向Unity的支持团队发送一封电子邮件。

给它们都添加好父子关系,那么人物移动的时候,跟随它的摄像机、它的碰撞体,还有其他需要跟随的东西就都跟着走了
不要给每个物体搞一大堆没用的脚本


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

public class ColliderFollowJump : MonoBehaviour
{
    public float jumpForce = 5f; // 跳跃力大小
    private bool isJumping = false;
    private Rigidbody rb;

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

    private void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space) && !isJumping)
        {
            Jump();
        }
    }

    private void Jump()
    {
        rb.AddForce(Vector3.up * jumpForce, ForceMode.Impulse);
        isJumping = true;
    }

    private void OnCollisionEnter(Collision collision)
    {
        if (collision.gameObject.CompareTag("Ground"))
        {
            isJumping = false;
        }
    }
}