The website below has a bunch of useful explanations for the different types of easing that can be used for moving an object.
Tag Archives: unity
PlayMaker camera fade in/out blinks after fade is complete – Unity
Looks that the issue has something to do with the fade event not being on the camera directly. Work around is to create a FSM on the main camera to fade in when the scene starts, have a bool that gets turned to true when the scene ends. Then the FSM on the camera fades out.
Example FSM on the main player camera
Unity script for enemy to follow player
The following script will let an object follow a player when it is within a certain range and will stop following it once it is out of a certain range
The following variables can be adjusted from the Inspector.
Attack Speed = How fast the game object moves
Attack Distance = How close does the player need to be to start moving
Buffer Distance = How far away from the player should the game object stop
Player = Game player to target
To use script, create a new C# script named FollowPlayer and paste in the following.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class FollowPlayer : MonoBehaviour
{
public float attackSpeed = 4;
public float attackDistance;
public float bufferDistance;
public GameObject player;
Transform playerTransform;
void GetPlayerTransform()
{
if (player != null)
{
playerTransform = player.transform;
}
else
{
Debug.Log("Player not specified in Inspector");
}
}
// Start is called before the first frame update
void Start()
{
GetPlayerTransform();
}
// Update is called once per frame
void Update()
{
var distance = Vector3.Distance(playerTransform.position, transform.position);
// Debug.Log("Distance to Player" + distance);
if (distance <= attackDistance)
{
if (distance >= bufferDistance)
{
transform.position += transform.forward * attackSpeed * Time.deltaTime;
}
}
}
}
Helpful Links
https://forum.unity.com/threads/c-get-transform-of-another-gameobject.177216/
https://docs.unity3d.com/ScriptReference/Vector3.Distance.html
Unity/Playmaker create 1 second loop
The following picture shows the basics for create a loop that runs every second. You’ll need to create a float variable (Named oneSecond in the screen shot) that has a value of 1 for one second. Changed if desired.
Put your actions in the “Execute every 1 Second” state
For more info on Get Time Info, visit https://hutonggames.fogbugz.com/default.asp?W496
Unity 3D – Changing color on game object changes color on other objects in scene
Problem: When changing the shader color on a game object, the color on other game objects changes.
Reason: This happens because the other game objects are using the same Mesh Renderer as the game object your modifying. So when your changing the shader, your actually modifying the Mesh Renderer, not the game object.
Fix: Change the Mesh Renderer for the game object.
In the example picture below, when you change the color on the cube (highlighted red) the color on the capsule changes, because they both are using the same Mesh Renderer (highlighted green). To fix, change either the Cube or Capsule to a different Mesh Renderer (highlighted green)
Setup Android SDK with Unity
Download and install Android Studio from here
Open up Unity and go to Edit -> Preferences
In the Unity Preferences go to External Tools and under the Android heading under SDK click browse
Locate your Android SDK folder and select folder. The SDK folder should be located under “C:\Users\User\AppData\Local\Android\Sdk”. You can check where the Android SDK Location is in Android Studio under Configure -> SDK Manager.
Your preferences should look something like this.
Unity 2D C# Script to Spawn Object on Screen at Touch Position
You’ll need a touch screen to test this out. Easiest way is to use the Unity Remote 5 app. It allows you to use your Android device as a touch screen input.
Start by creating a new empty C# script named “TouchScript” and paste in the following code.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class TouchScript : MonoBehaviour {
public GameObject bullet;
void Start () {
}
void Update () {
Touch myTouch = Input.GetTouch (0);
for(int i =0; i < Input.touchCount; i++)
if (myTouch.phase == TouchPhase.Began) {
{
Debug.Log ("Touch Position" + myTouch.position);
SpawnBullet (myTouch);
}
}
}
void SpawnBullet(Touch fireTouch) {
Vector3 touchPos = Camera.main.ScreenToWorldPoint (fireTouch.position);
touchPos.z = 1; // Puts the z coordinates at 1 so it is visible to the camera.
Debug.Log("Vector3 Pos" + touchPos);
Instantiate (bullet, touchPos, Quaternion.identity);
}
}
Now you’ll need to put your script on a game object. You should be able to drag and drop it on any game object, in this case the Main Camera “green”.
Next drag and drop the game object prefab to the script “red”. This tells the script which game object to spawn or instantiate when you touch the screen.
Run the scene. It should now create a game object where you touch on the screen.