在自上而下的射击游戏中,角色一直在晃动

本文关键字:一直 角色 自上而下 射击游戏 | 更新日期: 2023-09-27 18:18:24

好吧,我正在制作一个自上而下的射击游戏,我让我的角色用屏幕世界观看着鼠标,我让我的相机跟随我的玩家x轴和z轴,但每当我的角色从鼠标平行移动时,它就会开始摇晃,我认为这是因为它看着鼠标,鼠标的真实世界位置取决于相机的位置,但我不确定。

这里是playerscript许多反斜杠显示了我尝试过的其他东西

gameObject.GetComponent<Rigidbody>().velocity = new Vector3(Input.GetAxisRaw("Horizontal")*movementspeed,0,Input.GetAxisRaw("Vertical")*movementspeed);  
        if (gameObject.GetComponent<Rigidbody> ().velocity.x != 0 && gameObject.GetComponent<Rigidbody> ().velocity.z != 0) {
            gameObject.GetComponent<Rigidbody>().velocity = new Vector3(Input.GetAxisRaw("Horizontal")*movementspeeddiag ,0,Input.GetAxisRaw("Vertical")*movementspeeddiag); 
        }
    // makes vector 3 type target equall to mouse position on pixial cordinates converted in to real world coordniates
        target = camera.ScreenToWorldPoint (new Vector3(Input.mousePosition.x,Input.mousePosition.y,camera.transform.position.y - transform.position.y)); 
        //Vector3 newtarget = target - transform.position;
        //lerptarget = Vector3.Lerp (transform.eulerAngles,newtarget, 100);
        // states the vector 3 values of target 
        // makes object local z face target and iniziates up axis 
        //Quaternion rotation = Quaternion.LookRotation (newtarget, Vector3.up); 
        //transform.eulerAngles = Vector3.up * Mathf.MoveTowardsAngle (transform.eulerAngles.y, rotation.eulerAngles.y, rotatespeed * Time.deltaTime);
        transform.LookAt (target,Vector3.up);

和镜头脚本

    void LateUpdate(){
        position = new Vector3 (player.transform.position.x, 10, player.transform.position.z); 
        transform.position = position;
        //transform.localPosition = Vector3.Lerp (transform.position, position, speed *Time.deltaTime); 
        transform.eulerAngles = new Vector3 (90,0,0); 
    }

在自上而下的射击游戏中,角色一直在晃动

问题可能是你改变了刚体的速度。因为速度变化应用于每个固定的更新时间间隔,它不匹配帧更新时间,并可能导致抖动。根据unity文档,你应该尽量避免直接改变速度。(http://docs.unity3d.com/ScriptReference/Rigidbody-velocity.html)

我建议你使用MovePosition与Lerp函数一起实现玩家移动。看到这个:http://docs.unity3d.com/ScriptReference/Rigidbody.MovePosition.htmlhttp://docs.unity3d.com/ScriptReference/Vector3.Lerp.html