【问题标题】:Push player away from object smoothly平稳地将玩家推离物体
【发布时间】:2018-06-16 07:24:40
【问题描述】:

所以目前我有基本的代码工作。当达到一定范围时,玩家会被推开。然而。当我正向它前进时,这就像玩家在撞墙一样。

我应该如何让它更流畅?

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

public class PlanetPush : MonoBehaviour {

    [SerializeField] Transform target;
    [SerializeField] float range = 1000;
    [SerializeField] float pushingspeed = 10f;

    // Update is called once per frame
    void Update ()
    {
        //Check if is in range
        if (Vector3.Distance(target.position, transform.position) < range)
        { 
            Debug.DrawLine(transform.position, target.position, Color.green);

            //Push away from object
            target.position = Vector3.MoveTowards(target.position, transform.position, Time.deltaTime * -pushingspeed);
        }
        else
        {
            Debug.DrawLine(transform.position, target.position, Color.yellow);
        }
    }
}

【问题讨论】:

    标签: c# unity3d


    【解决方案1】:

    其实很简单。我不得不将推进速度提高到等于我的最大玩家速度。

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class PlanetPush : MonoBehaviour {
    
        [SerializeField] Transform target;
        [SerializeField] float range = 1000;
        [SerializeField] float pushingspeed = 0.01f;
        [SerializeField] float DampSpeed = 0.1f;
        float MaxPlayerSpeed = 30f;
    
        // Update is called once per frame
        void Update ()
        {
            //Check if is in range
            if (Vector3.Distance(target.position, transform.position) < range)
            { 
                Debug.DrawLine(transform.position, target.position, Color.green);
                pushingspeed += DampSpeed;
                if (pushingspeed >= MaxPlayerSpeed)
                {
                    pushingspeed = MaxPlayerSpeed;
                }
                //Push away from object
                target.position = Vector3.MoveTowards(target.position, transform.position, Time.deltaTime * -pushingspeed);
            }
            else
            {
                Debug.DrawLine(transform.position, target.position, Color.yellow);
                pushingspeed = 0.1f;
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多