private void Start() { _currentTerrainFeature = GameObject.Find("Track").GetComponent <ITerrainFeature>(); _wheelTransform = GetComponentInChildren <MeshRenderer>().transform; _skidSound = GetComponent <AudioSource>(); _trailParticleEffectBehaviour = trailParticleEffect.GetComponent <TrailParticleEffect>(); }
private void SetTerrain(WheelHit hit) { ITerrainFeature terrainHit = hit.collider.GetComponent <ITerrainFeature>(); if (!terrainHit.Equals(_currentTerrainFeature)) { // Debug.Log("Terrain Feature: "+terrainHit.name); // Debug.Log("Previous Feature: "+_currentTerrainFeature.name); ParticleSystem newTrailParticleEffect = Instantiate(terrainHit.GetTrailParticleEffect(), trailParticleEffect.transform.parent, false); newTrailParticleEffect.transform.position = trailParticleEffect.transform.position; _trailParticleEffectBehaviour.ScheduleDestroy(); trailParticleEffect = newTrailParticleEffect; _trailParticleEffectBehaviour = trailParticleEffect.GetComponent <TrailParticleEffect>(); _skidSound.Stop(); _skidSound.clip = terrainHit.GetTrailAudioClip(); TrailRenderer newTrail = Instantiate(trailEffect, trailEffect.transform.parent, false).GetComponent <TrailRenderer>(); newTrail.material = terrainHit.GetTrailMaterial(); newTrail.transform.position = trailEffect.transform.position; trailEffect.autodestruct = true; trailEffect.emitting = false; trailEffect = newTrail; _currentTerrainFeature = terrainHit; } }
/// <summary> /// Generate the voxels at the given chunk /// </summary> /// <param name="worldLocation"></param> /// <param name="feature"></param> /// <returns></returns> public override byte generateVoxelAt(Coordinate worldLocation, out ITerrainFeature feature, XZMapData xzData) { feature = null; if (worldLocation.y == xzData.surfaceHeight) { if (worldLocation.x + worldLocation.y % 12 == 0) { // make a new feature at the local chunk location feature = potentialFeatures[0].make(worldLocation - (Chunk.IDFromWorldLocation(worldLocation) * Chunk.Diameter)); } return(TerrainBlock.Types.Grass.Id); } else if (worldLocation.y < xzData.surfaceHeight) { return(TerrainBlock.Types.Dirt.Id); } else { return(TerrainBlock.Types.Air.Id); } }
public bool Equals(ITerrainFeature other) { return(other.TerrainFeatureName == TerrainFeatureName); }