- 23
- 165 202
Matt Wester
Приєднався 6 сер 2013
Point and Click Movement || Unity 2021 Tutorial
In this short tutorial, I explain quickly how to set up a point and click movement system in Unity.
Check out my website for more resources: mwesterstudios.com
Here is the 3rd Person Fly Mode that I got the humanoid character from:
assetstore.unity.com/packages/templates/systems/3rd-person-controller-fly-mode-28647
Download free characters and animations from Mixamo here:
www.mixamo.com/#/
Check out my website for more resources: mwesterstudios.com
Here is the 3rd Person Fly Mode that I got the humanoid character from:
assetstore.unity.com/packages/templates/systems/3rd-person-controller-fly-mode-28647
Download free characters and animations from Mixamo here:
www.mixamo.com/#/
Переглядів: 18 596
Відео
Direction Based Combat System || Unity 2020 Tutorial
Переглядів 9 тис.4 роки тому
In this video I quickly explain how to set up a directionally-based combat system as seen in popular video games like the Elder Scrolls: Arena, the Mount and Blade series, For Honor, and War of the Roses. The FPS arms (including several animations), Sci Fi Sword, and script used in this video are available for free on my website: www.mwesterstudios.com/ If you have a request for future tutorial...
Showcase 2020 | What I Have Learned in 5 Years of Technology Development
Переглядів 1574 роки тому
In this video I showcase several of my projects (both past and present) from the past five years. Five years ago I began to practice game development, and since then have also learned 3D modelling, animation (2D/3D), cinematography, programming, as well as many other useful skills. For more information on my team's current project, please visit my website: www.mwesterstudios.com/
Low Poly Japanese Bridge || Blender Speed Model
Переглядів 2544 роки тому
This quick video is to show my workflow when creating quick low poly models. Hope you enjoy! If you want access to the models made, leave a comment.
Create Toggles! | Unity 2020 Tutorial
Переглядів 1804 роки тому
In this tutorial I explain how to create a simple toggle(on/off) system with c# in Unity! If you have questions or ideas for future tutorials, be sure to leave a comment down below! Remember that if you want to download the script(or other FREE models for commercial use) you can do so from my website: mwesterstudios.com
Make Unity Assets With Blender! || Blender 2.8 to Unity 2020 Tutorial
Переглядів 2,8 тис.4 роки тому
In this video I explain how to create simple assets for your Unity game using blender 2.8! If you want to see more blender to Unity tutorials make sure to leave a comment down below!! You can download the TV (along with some other FREE assets) from my website: mwesterstudios.com Download blender for FREE here: blender.org
How to create a Multiple-Response Dialogue System | Unity 2020 Tutorial
Переглядів 30 тис.4 роки тому
In this video I will show how to create a simple multiple-response dialogue system for your game! This system is great in that it can be easily customized, and can be modified to work with quests, audio, and even become a book-reading system as seen in Skyrim! As mentioned in the video, the scripts can be downloaded from my website: www.mwesterstudios.com/ Also, here is a link to the video by B...
Tharn Official Trailer 1
Переглядів 3876 років тому
This is the full trailer video for Tharn, which is a difficult puzzle game coming soon to STEAM.
Tharn Official Teaser 2
Переглядів 2506 років тому
This is the official second teaser video for Tharn, soon to be available for Steam.
Tharn Official Teaser 1
Переглядів 1586 років тому
Tharn has finally been submitted for review on the Steam platform! Here is the first teaser for it. Enjoy figuring out the purpose behind this game!
EASILY Pick up and Throw Objects | Unity 2018 Tutorial
Переглядів 52 тис.6 років тому
In this updated tutorial, I go over the issues that the last video on this subject had, and we create a brand new system perfect for any game that involves picking up game objects! I also teach how to create a throw system that is easily modified, as well as implementing collisions and distance vectors.
2D Spiderman Game | Made with Unity
Переглядів 7 тис.6 років тому
This is a small prototype 2D game that I made with Unity, which is inspired by the web slinging Spiderman. Will probably be coming out on the Google Play store shortly for Android devices. Also, be sure to check out my most recent Android App: Blob Jumper!
Tharn Gameplay | Unity Puzzle Game
Переглядів 4,4 тис.6 років тому
Tharn is a small project I have been working on, and this is a short gameplay video to showcase what I have gotten done with it so far. The game is unfinished, and so expect a few bugs in the video. Players will take on the role of Dan, a loving and law abiding citizen. After some disturbances in his neighborhood, Dan went to his local community's T.H.A.R.N. Facility (Tactical Human Assisted Re...
Medieval Knight made in Blender
Переглядів 8936 років тому
These are several images of a medieval knight that I modeled with Blender. The images show the process of the modeling from the low poly beginning to the photo-realistic finished product. Credit for music: Renaissance by Audionautix is licensed under a Creative Commons Attribution license (creativecommons.org/licenses/by/4.0/) Artist: audionautix.com/ Video Game Soldiers by Twin Musicom is lice...
Everything Wrong With Humanity in Six Seconds
Переглядів 4306 років тому
Everything Wrong With Humanity in Six Seconds
SPAAAAACE! | Unity Point and Click Demo
Переглядів 3147 років тому
SPAAAAACE! | Unity Point and Click Demo
First Person Puzzle Demo | Unity 2017
Переглядів 5 тис.7 років тому
First Person Puzzle Demo | Unity 2017
Pick up and Move Objects | Unity 2017 Tutorial
Переглядів 30 тис.7 років тому
Pick up and Move Objects | Unity 2017 Tutorial
using System.Collections; using System.Collections.Generic; using System.Globalization; using System.IO.Pipes; using UnityEngine; using UnityEngine.UI; public class DialogueManager : MonoBehaviour { public NPC npc; bool isTalking = false; float distance; float curResponseTracker = 0; public GameObject player; public GameObject dialogueUI; public Text npcName; public Text npcDialogueBox; public Text playerResponse; // Start is called before the first frame update void Start() { dialogueUI.SetActive(false); } void OnMouseOver() { distance = Vector3.Distance(player.transform.position, this.transform.position); if(distance <= 2.5f) { if(Input.GetAxis("Mouse ScrollWheel") < 0f) { curResponseTracker++; if (curResponseTracker >= npc.playerDialogue.Length - 1) { curResponseTracker = npc.playerDialogue.Length - 1; } } else if(Input.GetAxis("Mouse ScrollWheel") > 0f) { curResponseTracker--; if(curResponseTracker < 0) { curResponseTracker = 0; } } //trigger dialogue if(Input.GetKeyDown(KeyCode.E) && isTalking==false) { StartConversation(); Debug.Log(); } else if(Input.GetKeyDown(KeyCode.E) && isTalking == true) { EndDialogue(); } if(curResponseTracker == 0 && npc.playerDialogue.Length >= 0) { playerResponse.text = npc.playerDialogue[0]; if(Input.GetKeyDown(KeyCode.Return)) { npcDialogueBox.text = npc.dialogue[1]; } } else if(curResponseTracker == 1 && npc.playerDialogue.Length >= 1) { playerResponse.text = npc.playerDialogue[1]; if(Input.GetKeyDown(KeyCode.Return)) { npcDialogueBox.text = npc.dialogue[2]; } } else if (curResponseTracker == 2 && npc.playerDialogue.Length >= 2) { playerResponse.text = npc.playerDialogue[2]; if (Input.GetKeyDown(KeyCode.Return)) { npcDialogueBox.text = npc.dialogue[3]; } } } } void StartConversation() { isTalking = true; curResponseTracker = 0; dialogueUI.SetActive(true); npcName.text = npc.name; npcDialogueBox.text = npc.dialogue[0]; } void EndDialogue() { isTalking = false; dialogueUI.SetActive(false); } } Np
Thank you, this was very helpfull. I thought it would be much harder but turns out I wasnt tackling this problem the right way
Here's my code: using System.Collections; using System.Collections.Generic; using UnityEngine; using System.IO.Pipes; using UnityEngine.UI; using TMPro; public class DialogueManagerA : MonoBehaviour { public NPC npc; bool isTalking = false; float distance; public float curResponseTracker = 0; public GameObject player; public GameObject dialogueUI; public TMP_Text npcName; public TMP_Text npcDialogueBox; public TMP_Text playerResponse; // Start is called before the first frame update void Start() { dialogueUI.SetActive(false); } // Update is called once per frame void OnMouseOver() { distance = Vector3.Distance(player.transform.position,this.transform.position); if(distance <= 2.5f) { if(Input.GetAxis("Mouse ScrollWheel") < 0f) { Debug.Log("!!!"); curResponseTracker++; if(curResponseTracker >= npc.playerDialogue.Length -1 ) { curResponseTracker = npc.playerDialogue.Length - 1; } } else if(Input.GetAxis("Mouse ScrollWheel") > 0f) { Debug.Log("!!!11"); curResponseTracker--; if(curResponseTracker <0) { curResponseTracker = 0; } } //trigger dialogue if(Input.GetKeyDown(KeyCode.E) && isTalking == false ) { StartConversation(); } else if(Input.GetKeyDown(KeyCode.E) && isTalking == true) { EndDialogue(); } if(curResponseTracker == 0 && npc.playerDialogue.Length >= 0) { playerResponse.text = npc.playerDialogue[0]; if(Input.GetKeyDown(KeyCode.F)) { npcDialogueBox.text = npc.dialogue[1]; } else if(curResponseTracker == 1 && npc.playerDialogue.Length >= 1) { playerResponse.text = npc.playerDialogue[1]; if(Input.GetKeyDown(KeyCode.F)) { npcDialogueBox.text = npc.dialogue[2]; } } else if(curResponseTracker == 2 && npc.playerDialogue.Length >= 2) { playerResponse.text = npc.playerDialogue[2]; if(Input.GetKeyDown(KeyCode.F)) { npcDialogueBox.text = npc.dialogue[3]; } } } } } void StartConversation() { isTalking = true; curResponseTracker = 0; dialogueUI.SetActive(true); npcName.text = npc.name; npcDialogueBox.text = npc.dialogue[0]; } void EndDialogue() { isTalking = false; dialogueUI.SetActive(false); } }
I Debug the MouseScroolWheel.It was working. But when it comes to curResponseTracker.Nothing happen
Can you explain waht is curResponseTracker? I think this one doesn't work here.I don't know how to check it
You may wanna look at your website. My AV blocked a threat
Sorry but the domain no longer belongs to me, don't use the website anymore please
@@mattwester9093 I won't. However I thought to give you a heads up if you hadn't told your audience about it prior to me finding out.
thank you so muchhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Great tutorial! Very understandable! Thank you so much!! Keep it up! ☺
It didnt work on me when i press E 😭
the link is broken its sending me to a page that wants to show puch notifications
I no longer own the domain, that page isn't mine, sorry
I wasn't looking for this, but this helped me finish my For Honor "Art of Combat" THANKS!! (:
How is the player rotating when you move? my character does not face the target
Hi! I had the same problem too! There is a variable to set sotpping distance! Try with 0.5 for example
The animation does not change from idle to walking when I move the character :(
actually my mistake, I had the wrong animator selected on the script component, its working for me now. Thx for the vid :)
Hey I'm trying to implement this in a game I am working on (I am very new coding) and all of the code and guide works completely fine until the "npcDialogueBox.text = npc.dialogue[0];" line of code, specifically the section after the = sign "npc.dialogue[0];" And I'm not really sure as to why
Are you getting any errors?
You can also make your own assets for VRChat as well with Blender, right?
Yes you can!
@@mattwester9093Sweet, thanks for that info.
Hi & great video. When I try to go to your website, it gives me a bitdefender error (not sure if it is real or not). That was in Chrome. When I tried it in Firefox, it says that the domain doesn't exist.
Yes sorry, there wasn't enough traffic to the site for me to justify keeping it up. I do plan on self hosting a site in the future, but am still in the process of deciding on a rebranded domain and setting up my servers If you need anything from the videos I can share a link to the google drive file I keep them in, so just let me know :)
this was very useful however each dialog option is always available and only has one panel of text for each. it would be nice to have multiple text panels per option and not be able to access any text panel at any time.
Happy this helped! For more dialogue panels you can try replacing them with additional queues in the code, each containing their own text panels
hey, so I have a question! For some reason, I can't add the textmeshpro assets into the npc, npc dialogue box, and player response options at 18:53. I'm not sure why, so any help is appreciated! Here is my script if you need it. using System.Collections; using System.Collections.Generic; using System.IO.Pipes; using UnityEngine; using UnityEngine.UI; public class Maneger : MonoBehaviour { public NPC npc; bool isTalking = false; float distance; float curResponseTracker = 0; public GameObject player; public GameObject dialogueUI; public Text npcName; public Text npcDialogueBox; public Text playerResponse; // Start is called before the first frame update void Start() { dialogueUI.SetActive(false); } void OnMouseOver( ) { distance = Vector3.Distance(player.transform.position, this.transform.position); if(distance <= 2.5f) { //trigger dialogue if (Input.GetKeyDown(KeyCode.E) && isTalking == false) { StartConversation(); } else if (Input.GetKeyDown(KeyCode.E) && isTalking == true); { EndDialogue(); } } } void StartConversation() { isTalking = true; curResponseTracker = 0; dialogueUI.SetActive(true); npcName.text = npc.name; npcDialogueBox.text = npc.dialogue[0]; } void EndDialogue() { isTalking = false; dialogueUI.SetActive(false); } }
Just choose text instead of text mes pro it's in UI > Legacy > Text
my UI doesnt have Text only TextMeshpro but when i try to drag the TextMeshpro to dialogManager i cant drag it
If you paste your code I can take a look at it
@@mattwester9093 its already good now i just need to change the text to textmeshpro in c#
i think the Text is in the Legacy option
@@totallyunusedusername i'll try
im trying to pick it up using ray casting, since its obvious this doesnt work by itself, the object needs to know the player wants to interact with it but im having a lot of trouble with connecting the ray casting with this moveobject class
Hello, why does the player continue to play the walking animation for half a second when reaching the destination?
hello, do you have a fix for this?
Wonderful!
Thank you for the tutorial. I have a couple of notes to improve the pedagogy: I know you're fluent in programming, but the people who are watching the tutorial might not understand each line of code and the reason why you used them. For instance, you started the DialogueManager script with "public NPC npc;" or "bool isTalking = false;" and the person who's watching it might wonder why. I know you explained it later on, but the viewer become disengaged at the moment. This is also the case for a whole script like the DialogueManager. Before making a script, I want to know the logic behind it and WHY we need it.
Why does my character when approaching the destination run around it?
Didn't work for me, code was fine but the fing orb did nothing to make my char move. Really well explained however, shame to see there's not been anymore videos.
deactivate the collider of the capsule that workt for me
For some reason I don't go to the right website when clicking the link. Could someone comment the code bellow pls? Ty for the video!
Matt please repost the tutorial for creating the puzzles
Sorry, but when I filmed the video I accidentally left out an important part while making the scripts. I took it down a few years ago and don't have it anymore
@@mattwester9093 No worries, do you know what tutorials/assets/documentation you used in order to make them or anything to look at to help recreate these puzzles?
@@emilieheskey5942 it was done from scratch, but essentially just used a combination of my tutorial on carrying objects with a lot of toggles.
Thank you for this! So, would you really want the throw and pickup to be in the same class? Or would they be separate classes?
Great video! The link for the downloads appears to be dead though
Yes, sorry about that. Due to little traffic I took down the website
@@mattwester9093 Any way we can get the download link back ? This is exactly what i searched but now sadly i can't download it..
The default text is textMeshPro what is the code to call it in the script ?
Hey awesome video, it's been a while since you uploaded, but I can't get past two dialogue changes in the player dialogue. I have four different responses, but it only does two. Any thoughts?
Could you post your code? I'll take a look when I get a chance
@@mattwester9093 using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class DialogueManger : MonoBehaviour { public NPC npc; bool isTalking = false; float distance; float curResponseTracker = 0; public GameObject player; public GameObject dialogueUI; public Text npcName; public Text npcDialogueBox; public Text playerResponse; // Start is called before the first frame update void Start() { dialogueUI.SetActive(false); } void OnMouseOver() { distance = Vector3.Distance(player.transform.position, this.transform.position); if(distance <=2.5f) { if(Input.GetAxis("Mouse ScrollWheel") < 0f) { curResponseTracker++; if (curResponseTracker >= npc.playerDialogue.Length - 1) { curResponseTracker = npc.playerDialogue.Length - 1; } } else if(Input.GetAxis("Mouse ScrollWheel") > 0f) { curResponseTracker--; if(curResponseTracker < 0) { curResponseTracker = 0; } } //trigger dialogue if(Input.GetKeyDown(KeyCode.E) && isTalking == false) { StartConversation(); } else if(Input.GetKeyDown(KeyCode.E) && isTalking == true) { EndDialogue(); } if(curResponseTracker == 0 && npc.playerDialogue.Length >= 0) { playerResponse.text = npc.playerDialogue[0]; if(Input.GetMouseButton(0)) { npcDialogueBox.text = npc.dialogue[1]; } } else if( curResponseTracker == 1 && npc.playerDialogue.Length >= 1) { playerResponse.text = npc.playerDialogue[1]; if(Input.GetMouseButton(0)) { npcDialogueBox.text = npc.dialogue[2]; } } } void StartConversation() { isTalking = true; curResponseTracker = 0; dialogueUI.SetActive(true); npcName.text = npc.name; npcDialogueBox.text = npc.dialogue[0]; } void EndDialogue() { isTalking = false; dialogueUI.SetActive(false); } } }
@@mattwester9093 thanks btw, as for the other script (NPC) it's: using System.Collections; using System.Collections.Generic; using UnityEngine; [CreateAssetMenu(fileName = "NPC file", menuName = "NPC Files Archive")] public class NPC : ScriptableObject { public string name; [TextArea(3,15)] public string[] dialogue; [TextArea(3, 15)] public string[] playerDialogue; }
@@mattwester9093 any thoughts?
@@seymaple I just read over your code and it looks fine. I'm guessing there is an issue on the editor side. Possibly even with how you set up the UI?
the website isn't working bruh
Awesome video 👍
Thanks!!!!!!!!!!!
BTW Great video
script doesn't work anymore, don't bother
As far as I know this script still works fine. Could you post any errors you have?
PLEASE someone help. when my player gets on the target destination sphere, it begins to loop between walking and stopping animation. anyone knows why?
I would guess that the issue lies in your animator controller, possibly the way you transition between the two animations? If not that, double check that there is no collision on the target destination sphere preventing the player from fully reaching the destination
@@mattwester9093 i have same problem I even completely removed the Sphere
Not sure if you ever fixed this issue, but I would make sure on your Animator that the "Apply Root Motion" is not check marked.
@@cademarsh5097 I unchecked it but abandoned the project anyway for another. Thanks
This tutorial is perfect....is there an easy way to add voice to dialogue when talking it'd be really helpful
please help. everything works. but when player reaches the red sphere. i checked my animation and player is not going back to idle instead the animation is moving still between idle and walking
Hi! Im new to game making and im following along this video. Did you try to set stopping distance to some value?
@@ElGabroVero yes. I ended the project as it couldn’t be fixed. But thanks for your response
@@micol04 Sorry to hear about that :( wish you luck for the future, man!
is there a way to make it easier to get dialogue. I am spamming e for it to work
i'll post my script below
using System.Collections; using System.Collections.Generic; using System.IO.Pipes; using UnityEngine; using UnityEngine.UI; public class DialogueManager : MonoBehaviour { public NPC npc; bool isTalking = false; float distance; float curResponseTracker = 0; public GameObject player; public GameObject dialogueUI; public Text npcName; public Text npcDialogueBox; public Text playerResponse; // Start is called before the first frame update void Start() { dialogueUI.SetActive(false); } void OnMouseOver() { distance = Vector3.Distance(player.transform.position, this.transform.position); if(distance <= 2.5f) { if(Input.GetAxis("Mouse ScrollWheel") < 0f) { curResponseTracker++; if(curResponseTracker >= npc.playerDialogue.Length -1) { curResponseTracker = npc.playerDialogue.Length -1; } } else if (Input.GetAxis("Mouse ScrollWheel") > 0f) { curResponseTracker--; if(curResponseTracker <0) { curResponseTracker = 0; } } //trigger dialogue if(Input.GetKeyDown(KeyCode.E) && isTalking==false) { StartConversation(); } else if(Input.GetKeyDown(KeyCode.E) && isTalking == true) { EndDialogue(); } if(curResponseTracker == 0 && npc.playerDialogue.Length >= 0) { playerResponse.text = npc.playerDialogue[0]; if(Input.GetKeyDown(KeyCode.Return)) { npcDialogueBox.text = npc.dialogue[1]; } } else if(curResponseTracker == 1 && npc.playerDialogue.Length >=1 ) { playerResponse.text = npc.playerDialogue[1]; if(Input.GetKeyDown(KeyCode.Return)) { npcDialogueBox.text =npc.dialogue[2]; } } else if(curResponseTracker == 2 && npc.playerDialogue.Length >=2 ) { playerResponse.text = npc.playerDialogue[2]; if(Input.GetKeyDown(KeyCode.Return)) { npcDialogueBox.text =npc.dialogue[3]; } } } void StartConversation() { isTalking = true; curResponseTracker = 0; dialogueUI.SetActive(true); npcName.text = npc.name; npcDialogueBox.text = npc.dialogue[0]; } void EndDialogue() { isTalking = false; dialogueUI.SetActive(false); } } }
thank you so much, im working on a point and click for my course and I couldnt figure this out thank you jesus christ i needed this
Any idea as to why the player won't move? I'm kinda goosed atm. I'm no programmer or Unity fanatic
hey buddy
Ah. I see we meet again@@emilythebaptist
@@LeetardPlays Just got it to work! hope it goes well for u
@@emilythebaptistI disliked this comment
The mechanics look good, but, you should add some polish, as the UI looks like something straight out of a flash game.
i found a solution for the panel not showing up when u press E the solution for me was the display channel i use display2 and it was set for display1
Any Reasons Why when the character reach his destination it will start walking in circles around the sphere?
I'm guessing the sphere has a collider that stops the character from actually reaching the destination, so he walks circles around
I had the same issue. I think it depends on the walking animation if the velocity of the agent can drop to zero (and the animation goes back to idle). I used a float variable in the control script as a minimum distance threshold and it works fine now. [SerializeField] float minDistanceToTarget = 0.1f; // in Update() instead of checking the velocity: if (player.remainingDistance > minDistanceToTarget) { animator.SetBool("isWalking", true); } else { animator.SetBool("isWalking", false); }
hello bro it appears to me that I could do in this case. (The referenced script on this behaviour (Game Object "npc")is missing!)
When making video's, you need to make sure the INS (the INSERT KEY), is NOT pressed, to get rid of the BLOCK CURSOR. in Visual Studio.
this scroll method its what game in the world use this system? none game that i have played has this system like this, all games that i play appear boxes to chose as answer its mutch better
Feel free to use boxes if that's your preference. I chose this method because I like it, the logic is the same regardless
hey i had the same problem as primentay and Yaya here is my script thanks! could you copy my script and correct it? back that would mean the world to me using System.Collections; using System.Collections.Generic; using System.IO.Pipes; using UnityEngine; using UnityEngine.UI; public class Maneger : MonoBehaviour { public NPC npc; bool isTalking = false; float distance; float curResponseTracker = 0; public GameObject player; public GameObject dialogueUI; public Text npcName; public Text npcDialogueBox; public Text playerResponse; // Start is called before the first frame update void Start() { dialogueUI.SetActive(false); } void OnMouseOver( ) { distance = Vector3.Distance(player.transform.position, this.transform.position); if(distance <= 2.5f) { //trigger dialogue if (Input.GetKeyDown(KeyCode.E) && isTalking == false) { StartConversation(); } else if (Input.GetKeyDown(KeyCode.E) && isTalking == true); { EndDialogue(); } } } void StartConversation() { isTalking = true; curResponseTracker = 0; dialogueUI.SetActive(true); npcName.text = npc.name; npcDialogueBox.text = npc.dialogue[0]; } void EndDialogue() { isTalking = false; dialogueUI.SetActive(false); } }
You are nothing short of a god walking amongst regular men. This was SO USEFULL AND EASY TO FOLLOW. great video
@Matt Wester Can you please make a video where u have options for the player to select instead of pre-written dialogue.