【发布时间】:2020-05-28 08:00:22
【问题描述】:
我创建了一个 C# 脚本来定义 3D 平面中对象的 spiral motion。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class spiralanti : MonoBehaviour
{
float angles;
float radiuss;
float angleSpeed;
float rSpeed;
// Start is called before the first frame update
void Start()
{
angles = 0;
radiuss = 10;
angleSpeed = 150;
rSpeed = 0.7f;
angles = Mathf.Max(0, Mathf.PI);
radiuss = Mathf.Max(0, radiuss);
//float x = 0;
// float y = 0;
// float z = 0;
}
// Update is called once per frame
void Update()
{
angles += Time.deltaTime * angleSpeed;
radiuss -= Time.deltaTime * rSpeed;
if (radiuss == 0)
{
float x = 0;
float y = 0;
float z = 0;
transform.position = new Vector3(x, y, z);
}
else
{
float x = radiuss * Mathf.Cos(Mathf.Deg2Rad * angles);
float z = radiuss * Mathf.Sin(Mathf.Deg2Rad * angles);
float y = 0;
transform.position = new Vector3(x, y, z);
}
}
}
物体的螺旋形非常好,但我想让它在到达原点时停止并停留在那里。我已经尝试过代码中给出的 if-else 语句,但它并没有停止。相反,它从向内螺旋变成向外螺旋。
请帮我写代码。
【问题讨论】:
-
你的意思是把
if (radiuss == 0)改成这个if (radiuss <= 0) -
由于舍入误差,半径可能永远不会完全为零。尝试将您的支票更改为
if (radiuss <= 0)