C# 将玩家平稳地推离物体
因此,目前我有基本的代码工作。当达到一定范围时,玩家被推开。然而。这就好像当我正朝着它跑的时候,球员正在撞墙 我该如何使它更平滑C# 将玩家平稳地推离物体,c#,unity3d,C#,Unity3d,因此,目前我有基本的代码工作。当达到一定范围时,玩家被推开。然而。这就好像当我正朝着它跑的时候,球员正在撞墙 我该如何使它更平滑 using System.Collections; using System.Collections.Generic; using UnityEngine; public class PlanetPush : MonoBehaviour { [SerializeField] Transform target; [SerializeField] fl
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);
}
}
}
使用系统集合;
使用System.Collections.Generic;
使用UnityEngine;
公共类PlanetPush:单一行为{
[序列化字段]转换目标;
[SerializeField]浮动范围=1000;
[Field]浮动推送速度=10f;
//每帧调用一次更新
无效更新()
{
//检查是否在范围内
if(矢量3.距离(目标位置、变换位置)<范围)
{
DrawLine(transform.position、target.position、Color.green);
//推开物体
target.position=Vector3.movetoward(target.position、transform.position、Time.deltaTime*-推进速度);
}
其他的
{
DrawLine(transform.position、target.position、Color.yellow);
}
}
}
实际上这很容易。我必须提高推球速度,使之等于我的最大球员速度
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;
}
}
}
使用系统集合;
使用System.Collections.Generic;
使用UnityEngine;
公共类PlanetPush:单一行为{
[序列化字段]转换目标;
[SerializeField]浮动范围=1000;
[Field]浮动推送速度=0.01f;
[SerializeField]浮动阻尼速度=0.1f;
浮动MaxPlayerSpeed=30f;
//每帧调用一次更新
无效更新()
{
//检查是否在范围内
if(矢量3.距离(目标位置、变换位置)<范围)
{
DrawLine(transform.position、target.position、Color.green);
推进速度+=阻尼速度;
如果(推送速度>=MaxPlayerSpeed)
{
推进速度=最大播放速度;
}
//推开物体
target.position=Vector3.movetoward(target.position、transform.position、Time.deltaTime*-推进速度);
}
其他的
{
DrawLine(transform.position、target.position、Color.yellow);
推进速度=0.1f;
}
}
}