Object 当我把武器系在我的角色身上时,他开始旋转

Object 当我把武器系在我的角色身上时,他开始旋转,object,unity3d,game-physics,Object,Unity3d,Game Physics,所以我在做这个格斗游戏,但出于某种原因,当我用一个固定的铰链连接我的武器和我的角色时,他开始疯狂地旋转,武器在屏幕上疯狂地飞来飞去,好像没有连接到他一样。我还是个新手,所以请容忍他,我确信这只是一个愚蠢的错误,我确实试着增加角色的重量,以防武器的重量让他摔倒,但这没有起到任何作用 如有任何提示或建议,将不胜感激!:) 为了进一步解释我的情况: 我的武器是由maya制作的几个组件,它们通过固定铰链关节连接。除了铰链关节,武器上唯一的东西就是一个刚体,这就是为什么我认为它可能与它有关 该角色有一个玩

所以我在做这个格斗游戏,但出于某种原因,当我用一个固定的铰链连接我的武器和我的角色时,他开始疯狂地旋转,武器在屏幕上疯狂地飞来飞去,好像没有连接到他一样。我还是个新手,所以请容忍他,我确信这只是一个愚蠢的错误,我确实试着增加角色的重量,以防武器的重量让他摔倒,但这没有起到任何作用

如有任何提示或建议,将不胜感激!:)

为了进一步解释我的情况:

我的武器是由maya制作的几个组件,它们通过固定铰链关节连接。除了铰链关节,武器上唯一的东西就是一个刚体,这就是为什么我认为它可能与它有关

该角色有一个玩家动作脚本、刚体和各种碰撞器

移动脚本如下所示:

using UnityEngine;
using System.Collections;

[RequireComponent (typeof(CharacterController))] 

public class MovementPlayer1 : MonoBehaviour
{
    public CollisionFlags collision;                                                        
    public float moveSpeed = 10;                                                            
    public Vector3 moveDirection;                                                           
    public CharacterController character;                                  
    public float jumpSpeed = 4;
    public float gravity = 4;

    void Start()
        {
            character = GetComponent<CharacterController>();
            moveDirection = Vector3.zero;
        }  

    void Update ()
        {
        if(Input.GetAxis("Horizontal") != 0)
             {
                 transform.Rotate(0, Input.GetAxis("Horizontal"), 0);
             }
        if (character.isGrounded)
            {
                moveDirection = Vector3.forward * Input.GetAxis("Vertical");
                moveDirection = transform.TransformDirection(moveDirection).normalized;
                moveDirection *= moveSpeed;

                if(Input.GetButton("Jump"))
                {
                    moveDirection = Vector3.up * Input.GetAxis("Jump");
                    moveDirection = transform.TransformDirection(moveDirection).normalized;
                    moveDirection *= jumpSpeed;
                }
            }

        moveDirection.y -= gravity * Time.deltaTime;
        collision = character.Move(moveDirection * Time.deltaTime);
        }
}    
使用UnityEngine;
使用系统集合;
[RequiredComponent(typeof(CharacterController))]
公共阶级运动玩家1:单一行为
{
公众碰撞;旗帜碰撞;
公共浮动速度=10;
公共向量3移动方向;
公众人物控制者人物;
公共浮子跳跃速度=4;
公众浮标重力=4;
void Start()
{
character=GetComponent();
移动方向=矢量3.0;
}  
无效更新()
{
if(Input.GetAxis(“水平”)!=0)
{
旋转(0,Input.GetAxis(“水平”),0);
}
if(character.isground)
{
moveDirection=Vector3.forward*Input.GetAxis(“垂直”);
moveDirection=transform.TransformDirection(moveDirection).normalized;
移动方向*=移动速度;
if(Input.GetButton(“跳转”))
{
moveDirection=Vector3.up*Input.GetAxis(“跳转”);
moveDirection=transform.TransformDirection(moveDirection).normalized;
移动方向*=跳跃速度;
}
}
moveDirection.y-=重力*时间增量;
碰撞=字符.Move(移动方向*时间.deltaTime);
}
}    

听起来运动学与角色武器上的刚体有关,因此请尝试将刚体上的IsKinetic设置为true。目前还不清楚角色上是否也有刚体,但如果有刚体,则可能会因为附加的角色控制器而将其删除