您的位置:首页 > 移动开发 > Unity3D

Unity学习日常问题记录八-反弹和静止条件值是可以设的,ParticleSystem的方向

2016-06-12 13:28 495 查看
前面的内容中没有找到设发生反弹和静止的条件,经人提醒,发现是在Project Setting



其中Bounce Threshold是反弹阀值,初始值是2,这里设小些,就不会发生球撞在案边,垂直于案边的分量消失的问题

Sleep Threshold是速度低于多少停止的阀值,这里也设一下。

能不写自己的反弹规则先不写了,看上次的问题,Unity提供的编程接口似乎并不够友好。

2.ParticleSytem

另外我为了只是白球的线路加了个Particle System,这次发现要让粒子延直线射出,并方向可在游戏中控制。

(1)ParticleSystem的VelocityoverLifeTime为只读,不能在脚本中直接修改

网上说的类似,改变每个粒子速度的方法

        ParticleSystem.Particle[] particles = new ParticleSystem.Particle[whiteBallParticleSystem.particleCount];
//        int count = whiteBallParticleSystem.GetParticles(particles);
//    
//        tempHitVector = (whiteBall.transform.position - tableStick.transform.position).normalized;
//        for(int i = 0; i < count; i++)
//        {
//            particles[i].velocity = tempHitVector;
//        }
//
//        whiteBallParticleSystem.SetParticles(particles, count);

这样的代码我使用不成功,似乎只会甩尾,不能大规模移动

(2)可行的方法,如Survival shooter工程中枪射击的粒子,在白球上建立一个空的子物体作为PariticleSystem的载体



实验中我记得无论用我现在这种,cone的喇叭状的射出,把出射范围和角度都射的很小,看起来像直线,还是mesh状的射出。

方向通过改变这个携带ParticleSystem的子物体的方向来改变,因为粒子这种模式总是从local rotation的z轴正向射出,代码如下

public class WhiteBallParticleSystemController : MonoBehaviour {

    public GameObject tableStick;
    public GameObject whiteBall;
    Vector3 tempHitVector;
    // Use this for initialization
    void Start () {
        
    }
    
    void LateUpdate ()
    {
        tempHitVector = whiteBall.transform.position - tableStick.transform.position;
        tempHitVector = new Vector3 (tempHitVector.x, 0, tempHitVector.z);
        tempHitVector = tempHitVector + whiteBall.transform.position;
        gameObject.transform.LookAt (tempHitVector,Vector3.up);
    }
}
,还有就是想把PariticleSystem的VelocityoverLifeTime设成(1,0,0),希望从本地坐标的x正向也是不行的,即使x=999似乎也改变不了90度(难道默认的z轴正向)。

做了个简单的台球游戏,1.0版本可以击球,记录Player1,Player2的进球,交换选手,还有些Bug我要调一下,另外由于其他一些问题,不会放出更复杂的版本(这个版本在现在做例子已经够了,几百行和这种程度的场景作为初学应该是合适的),由于一些其他问题1.0版大约1个月后会放出。其实我觉得这两天写的已经和Unity没什么关系了,只是一些正常逻辑的设定。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  3D Unity 编程 游戏