Example #1
0
 private IEnumerator Dissolve()
 {
     //Dissolve object then move it back to it's initial position
     m_dissolving = true;
     m_timeLerper.Reset();
     while (m_dissolveAmmount != 1)
     {
         m_dissolveAmmount = m_timeLerper.Lerp(0, 1, 0.5f);
         foreach (Material mat in m_materials)
         {
             mat.SetFloat("_Amount", m_dissolveAmmount);
         }
         yield return(null);
     }
     transform.position = m_initialPos;
     transform.rotation = m_initialRot;
     GetComponent <Rigidbody>().velocity = Vector3.zero;
     StartCoroutine(Resolve());
 }
    public override bool UpdateAnim(Transform transform)
    {
        //Get new target from target and offset
        Vector3 offset = m_target.value.transform.forward * m_forwardOffset + m_target.value.transform.right * m_rightOffset + m_target.value.transform.up * m_upOffset;
        Vector3 target = m_target.value.transform.position + offset;

        //Lock axis so it doesn't move along it but checks still work
        if (m_lockX)
        {
            target.x = transform.position.x;
        }
        if (m_lockY)
        {
            target.y = transform.position.y;
        }
        if (m_lockZ)
        {
            target.z = transform.position.z;
        }
        //Only check along these axes
        Vector3 check = transform.position;

        if (m_checkX)
        {
            check.x = target.x;
        }
        if (m_checkY)
        {
            check.y = target.y;
        }
        if (m_checkZ)
        {
            check.z = target.z;
        }
        //Move and check for target pos
        if (Vector3.Distance(transform.position, check) > 0.1f)
        {
            transform.position = m_lerper.Lerp(m_initPos, target, m_moveTime);
            if (m_stareAtTarget)
            {
                transform.LookAt(new Vector3(m_target.value.transform.position.x, transform.position.y, m_target.value.transform.position.z));
            }
            return(false);
        }
        return(true);
    }
Example #3
0
    // Update is called once per frame
    void Update()
    {
        if (!m_canSpawn)
        {
            return;
        }

        if (m_devilInScene)
        {
            return;
        }

        //Wait for specified seconds before starting random spawn again
        if (m_wait)
        {
            m_waitTimer -= Time.deltaTime;
            if (m_waitTimer <= 0)
            {
                m_wait = false;
            }
            return;
        }

        //Every second, check if random number is less than spawnChance
        m_timer      -= Time.deltaTime;
        m_spawnChance = m_lerper.Lerp(0, 1000, m_maxTime);
        if (m_timer <= 0)
        {
            float spawn = Random.Range(0, 1000);
            if (spawn < m_spawnChance)
            {
                //Spawn the devil
                m_lerper.Reset();
                SpawnDevil();
            }
            m_timer = 1;
        }
    }